首页 Hadoop在linux下的安装部署

Hadoop在linux下的安装部署

举报
开通vip

Hadoop在linux下的安装部署1.说明 共有两台机器(一台式一笔记本),主机名为gislq-1,gislq-2 IP地址:192.9.116.20,192.9.116.67 操作系统:均为Ubuntu 10.10 hadoop:hadoop-0.16.3.tar.gz【1】 gislq-1作为namenode(master),gislq-2作为datanode(slave) 【1】遇到问题 我最初下载的是最新的hadoop版本0.21.0,但是到最后所有配置完成后,输入命令$ start-all.sh 提示DEPRECATED: Use of ...

Hadoop在linux下的安装部署
1.说明 共有两台机器(一台式一笔记本),主机名为gislq-1,gislq-2 IP地址:192.9.116.20,192.9.116.67 操作系统:均为Ubuntu 10.10 hadoop:hadoop-0.16.3.tar.gz【1】 gislq-1作为namenode(master),gislq-2作为datanode(slave) 【1】遇到问 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 我最初下载的是最新的hadoop版本0.21.0,但是到最后所有配置完成后,输入命令$ start-all.sh 提示DEPRECATED: Use of this script to execute hdfs command is deprecated. Instead use the hdfs command for it。但是当我使用hdfs命令时又出现Hadoop common not found。后来发现好象是新版本里的一个bug(或者是新版本还需要新的设置),安装0.16.3版问题消失 2.ping机器 网上说一个很简单的测试办法就是ping一下主机名,比如在gislq-1上ping gislq-2,如果能ping通就OK!我不知道什么叫能ping通。。。同事说只要在终端输入ping gislq-2命令,如果能能传输数据包即可。我照做,用这个命令可以ping通,但是到了后面使用scp命令复制文件时【2】,如果目标地址使用主机名 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 示,则不能复制,过很长时间后提示: ssh: connect to host gislq-2 port 22: Connection timed out lost connection 如果目标地址使用IP地址表示,则没有问题。同样ssh也不能用主机名连接 解决办法就是修改/etc/hosts文件,如果该台机器作Namenode用,则需要在hosts文件中加上集群中所有机器的IP地址及其对应的主机名;如果该台机器作Datanode用,则只需要在hosts文件中加上本机IP地址和Namenode机器的IP地址。 以本机为例,gislq-1中的/etc/hosts文件看起来是这样的 127.0.0.0         localhost     localhost 192.9.116.20      gislq-1       gislq-1 192.9.116.20      gislq-2       gislq-2 gislq-2中的/etc/hosts文件看起来是这样的 127.0.0.0         localhost     localhost 192.9.116.20      gislq-1       gislq-1 192.9.116.20      gislq-2       gislq-2 【2】使用scp命令时,会询问目标机器的root管理员的密码,普通用户(就是不管是安装时自己设的用户,还是后来添加的管理员用户)的密码无效。ubuntu默认root用户密码为空 输入命令passwd root就可以更改密码了 3.新建系统hadoop用户 Hadoop要求所有机器上hadoop的部署 目录 工贸企业有限空间作业目录特种设备作业人员作业种类与目录特种设备作业人员目录1类医疗器械目录高值医用耗材参考目录 结构要相同,并且都有一个相同的用户名的帐户,所以需要每台机器建一个同名的用户。 在这4台机器上建hadoop用户,密码:hadoop(用户名和密码可自己指定),我建的是管理员账户 4.安装并开启SSH服务 在SSH设置之前先要安装ssh服务,并开启。Ubuntu缺省安装了openssh-client,所以在这里就不安装了,如果你的系统没有安装的话,再用apt-get安装上即可。 网上有很多介绍在Ubuntu下开启SSH服务的文章,但大多数介绍的 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 测试后都不太理想,均不能实现远程登录到Ubuntu上,最后 分析 定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析 原因是都没有真正开启ssh-server服务。最终成功的方法如下: $ sudo apt-get install openssh-server 然后确认sshserver是否启动了: $ ps -e |grep ssh 如果只有ssh-agent那ssh-server还没有启动,需要执行命令$ /etc/init.d/ssh start,如果看到sshd那说明ssh-server已经启动了。 5.配置SSH Hadoop需要namenode到datanode的无密码SSH,所以需要设置namenode到其他3台datanode的无密码公钥认证方式的SSH。简单的说,在gislq-1上需要生成一个密钥对,即一个私钥,一个公钥。将公钥拷贝到gislq-2上,这样,比如当gislq-1向 gislq-2发起ssh连接的时候,gislq-2上就会生成一个随机数并用gislq-1的公钥对这个随机数进行加密,并发送给gislq-1;gislq-1 收到这个加密的数以后用私钥进行解密,并将解密后的数发送回gislq-2,gislq-2确认解密的数无误后就允许gislq-1进行连接了。这就完成了一次公钥认证过程。 首先用hadoop用户登录每台机器(包括namenode),在/home/hadoop/目录下建立.ssh目录,并将目录权限设为:drwxr-xr-x,设置命令: chmod 755 .ssh 在namenode(gislq-1)上执行命令:$ ssh-keygen -t rsa (这个命令将为namenode生成一个密钥对) Enter file in which to save the key (/home/hadoop/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: 这三个项目直接回车即可(第一个回车表示将密钥对默认存储在/home/hadoop/.ssh目录下,第二三个回车表示设置空密码)。 这个命令将在/home/hadoop/.ssh目录下生成一对密钥id_rsa,id_rsa.pub。然后将id_rsa的内容复制到每个机器(包括本机)的home/hadoop/.ssh/authorized_keys文件中,如果机器上已经有authorized_keys这个文件了,就在文件末尾加上 id_rsa.pub中的内容,如果没authorized_keys这个文件,直接cp或者scp就好了,下面的操作假设各个机器上都没有 authorized_keys文件。 具体命令: 在namenode执行(用新建的hadoop用户登录): $ cp /home/hadoop/.ssh/id_rsa.pub /home/hadoop/.ssh/authorized_keys $ scp /home/hadoop/.ssh/authorized_keys gislq-2:/home/hadoop/.ssh/ 此处的scp就是通过ssh进行远程copy,此处需要输入远程主机的密码,按照提示输入即可 当然,也可以用其他方法将authorized_keys文件拷贝到其他机器上,比方说用U盘(不过还是建议用scp命令,因为可以检查以下ssh服务是否已经开启)。 用hadoop用户登录每台机器,修改/home/hadoop/.ssh/authorized_keys文件的权限为:-rw-r–r–,设置命令: $ cd /home/hadoop/.ssh $ chmod 644 authorized_keys 设置完成后,测试一下namenode到各个datanode节点的ssh链接,包括到本机,如果不需要输入密码就可以ssh登录,说明设置成功了。 测试方法: 比如gislq-1向gislq-2发起ssh连接 [hadoop@gislq-1:~]$ssh  gislq-2 如果ssh配置好了,就会出现以下提示信息 The authenticity of host [gislq-2] can't be established. Key fingerprint is 1024 5f:a0:0b:65:d3:82:df:ab:44:62:6d:98:9c:fe:e9:52. Are you sure you want to continue connecting (yes/no)? OpenSSH告诉你它不知道这台主机,但是你不用担心这个问题,因为你是第一次登录这台主机。键入“yes”。这将把这台主机的“识别标记”加到“~/.ssh/know_hosts”文件中。第二次访问这台主机的时候就不会再显示这条提示信息了。 然后你会发现不需要输入密码就可以建立ssh连接了,恭喜你,配置成功了! 6.安装JDK 到sun网站下载JDK安装包jdk-6u11-linux-i586.bin,copy到机器的usr目录中,并在每台机器的root用户下面安装. 在root用户下: $ cd /usr $ chmod +x jdk-6u11-linux-i586.bin 给安装文件增加执行权限. $ ./jdk-6u11-linux-i586.bin,按提示按几个空格健后,输入yes后开始安装jdk6. 安装好后,将目录名修改为jdk6. 设置JDK的环境变量,考虑到JDK可能会有其他系统用户也会用到,建议将环境变量直接设置在/etc/profile中具体内容(如果没有则直接在profile文件中添加): export JAVA_HOME=/usr/jdk6 export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin 用$ source /etc/profile使用java环境生效. 7.设置目录并安装Hadoop 用hadoop用户登录namenode,并新建一个目录,用于存放所有hadoop相关内容。 本例中在/home/hadoop目录下新建HadoopInstall 下载hadoop安装包并copy至namenode的hadoop用户的/home/hadoop/HadoopInstall并解压缩: tar zxvf hadoop-0.16.3.tar.gz 考虑到今后升级以及其他操作的方便性,建议建一个名称为hadoop的链接,指向hadoop-0.16.3目录: ln -s hadoop-0.16.3 hadoop 新建目录:/home/hadoop/HadoopInstall/hadoop-conf 将/home/hadoop/HadoopInstall/hadoop/conf目录下的hadoop_site.xml,slaves,hadoop_env.sh,masters文件拷贝到/home/hadoop/HadoopInstall/hadoop-conf目录 在/home/hadoop/.bashrc文件中设置环境变量 $HADOOP_CONF_DIR: export HADOOP_CONF_DIR=$HOME/HadoopInstall/hadoop-conf/ 8.Hadoop环境变量设置和配置文件修改 在/home/hadoop/HadoopInstall/hadoop-conf/hadoop_env.sh文件中设置环境变量: export JAVA_HOME=/usr/jdk6 export HADOOP_HOME=/home/hadoop/HadoopInstall/hadoop 在/home/hadoop/HadoopInstall/hadoop-conf/masters文件中设置namenode: 文件内容: gislq-1 在/home/hadoop/HadoopInstall/hadoop-conf/slaves文件中设置datanode: 文件内容: gislq-2 在conf/目录中的hadoop-default.xml中包含了Hadoop的所有配置项,但是不允许直接修改!可以在hadoop-conf/目录下的hadoop-site.xml里面定义我们需要的项,其值会覆盖hadoop-default.xml中的默认值。可以根据自己的实际需要来进行定制。 在/home/hadoop/HadoopInstall/hadoop-conf/hadoop-site.xml文件中设置hadoop配置:   fs.default.name   gislq-1:9000   The name of the default file system. Either the literal string "local" or a host:port for DFS.   mapred.job.tracker   gislq-1:9001   The host and port that the MapReduce job tracker runs at. If "local", then jobs are run in-process as a single map and reduce task.   hadoop.tmp.dir   /home/hadoop/HadoopInstall/tmp   A base for other temporary directories.   dfs.name.dir   /home/hadoop/HadoopInstall/filesystem/name   Determines where on the local filesystem the DFS name node should store the name table. If this is a comma-delimited list of directories then the name table is replicated in all of the directories, for redundancy.   dfs.data.dir   /home/hadoop/HadoopInstall/filesystem/data   Determines where on the local filesystem an DFS data node should store its blocks. If this is a comma-delimited list of directories, then data will be stored in all named directories, typically on different devices. Directories that do not exist are ignored.   dfs.replication   1   Default block replication. The actual number of replications can be specified when the file is created. The default is used if replication is not specified in create time. 9.部署datanode节点 将namenode上安装配置完成的hadoop文件拷贝到所有datanode: $ scp -r /home/hadoop/HadoopInstall gislq-2:/home/hadoop/scp -r /home/hadoop/HadoopInstall 10.启动Hadoop 启动之前,我们先要格式化namenode,先进入~/HadoopInstall/hadoop目录,执行下面的命令 [hadoop@gislq-1:hadoop]$bin/hadoop  namenode  -format 不出意外,应该会提示格式化成功。如果不成功,就去hadoop/logs/目录下去查看日志文件 下面就该正式启动hadoop啦,在bin/下面有很多启动脚本,可以根据自己的需要来启动。 * start-all.sh 启动所有的Hadoop守护。包括namenode, datanode, jobtracker, tasktrack * stop-all.sh 停止所有的Hadoop * start-mapred.sh 启动Map/Reduce守护。包括Jobtracker和Tasktrack * stop-mapred.sh 停止Map/Reduce守护 * start-dfs.sh 启动Hadoop DFS守护.Namenode和Datanode * stop-dfs.sh 停止DFS守护 在这里,简单启动所有守护 [hadoop@gislq-1:hadoop]$bin/start-all.sh 同样,如果要停止hadoop,则 [hadoop@gislq-1:hadoop]$bin/stop-all.sh 11.HDFS测试 运行bin/目录的hadoop命令,可以查看Haoop所有支持的操作及其用法,这里以几个简单的操作为例。 在HDFS建立目录(在HDFS中建立一个名为testdir的目录): $ bin/hadoop dfs -mkdir testdir 复制文件到HDFS(把本地文件large.zip拷贝到HDFS的根目录/user/hadoop/下,文件名为testfile.zip): $ bin/hadoop dfs -put /home/hadoop/large.zip testfile.zip 查看HDFS的现有文件 $ bin/hadoop dfs -ls 12.C++测试(网上大牛写的,我暂时还未测试) 分别用c++编写mapper和reducer程序,完成对文件中的单词数量的统计: mapper.cpp: // c++ map reduce Mapper // word count example // 2008.4.18 // by iveney #include #include using namespace std; int main() { string buf; while( cin>>buf ) cout< return 0; } reducer.cpp: #include #include #include using namespace std; int main() { map dict; map::iterator iter; string word; int count; while( cin>>word>>count ) dict[word]+=count; iter = dict.begin(); while( iter != dict.end() ) { cout
本文档为【Hadoop在linux下的安装部署】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_665627
暂无简介~
格式:doc
大小:43KB
软件:Word
页数:7
分类:互联网
上传时间:2011-12-23
浏览量:25