日期:2014-05-16  浏览次数:20742 次

hadoop-0.19.0在linux下的集群配置

最近在linux下配置了hadoop,现将配置过程总结如下,欢迎讨论,欢迎交流!
一、配置ssh服务
??? 由于MapReduce程序在运行时namenode要和datanode不断地进行通信。所以必须使得namenode能够无密码自动登录到各个datanode上。
???? 1、在namenode上,执行ssh-keygen-t rsa -P '' -f ~/.ssh/id_rsa,直接回车,完成后会在~/.ssh/生成两个文 件:id_rsa和id_rsa.pub,这两个文件相当于钥匙(id_rsa)和锁(id_rsa.pub),把锁(id_rsa.pub)追加到授权key(authorized_keys文件)里面。完成后可以实现无密码登陆本机:ssh localhost
???? 2、将namenode 上的authorized_keys文件传输到各datanode中的同一目录下(~/.ssh/目录),然后可以实现namenode无密码登录到任何datanode上。输入如下命令测试:ssh 用户名@datanode的IP地址。

二、hadoop的配置
??? 1、hadoop-env.sh的配置
?????????? 配置jdk所在的根目录,在hadoop-env.sh中添加:export JAVA_HOME=你的JDK根目录 即可。
??? 2、hadoop-site.xml的配置
?????????? 根据本人不断地实验,要想确保集群的稳定运行,在hadoop-site文件中必须配置如下的属性
??????????? <property>
??????????????? <name>fs.default.name</name>
???? ???????? <value>hdfs://namenode的IP地址:四位的端口号< /value>
??????????? </property>
??????????? <property>
??????????????? <name>dfs.datanode.handler.count</name>
??????????????? <value>1< /value>??
??????????? </property>????????????
??????????? <property>
??????????????? <name>dfs.replication</name>
??????????????? <value>1< /value>
??????????? </property>
??????????? <property>
??????????????? <name>mapred.job.tracker</name>
??????????????? <value>namenode的IP地址:四位的端口号(和上面不同)< /value>
??????????? </property>
??????????? <property>
??????????????? <name>hadoop.tmp.dir</name>
??????????????? <value>路径1</value>
??????????? <property>
??????????? <property>
?????????????? <name>dfs.name.dir</name>
?????????????? <value>路径2</value>
??????????? <property>
??????????? <property>
?????????????? <name>dfs.data.dir</name>
?????????????? <value>路径3</value>
??????????? <property>
??????????? <property>
?????????????? <name>mapred.local.dir</name>
?????????????? <value>路径4</value>
??????????? <property>
?? 3、hadoop传输
???????? 将配置好的hadoop由namennode上传输到各个datanode上,即执行:"scp -rp? hadoop-0.19.0? 用户名@datanode的IP地址:特定目录"
???????? 需要注意的是,hadoop在各个机器上的目录结构,必须完全一致。
三、集群的测试
???? 在namenode上,进入hadoop的主目录,依次执行如下命令进行测试
???? 1、 bin/hadoop namenode -format :格式化操作
???? 2、bin/start-all.sh? :开启集群,启动jobtracker,tasktracker,namenode,datanode,secondnamenode守护进程
???? 3、jps :查看守护进程是否已经启动,如果配置无任何问题的话,以上的五个守护进程已经启动成功了。
???? 4、运行示例程序wordcount
?????????? 创建目录:mkdir input
?????????? 进入目录:cd input
?????????? 创建两个文件:echo "hello world,hello hadoop">a.txt;echo "hello world,hello hadoop">b.txt
?????????? 上传input目录:bin/hadoop fs -copyFromLocal input input
?????????? 执行程序:bin/hadoop jar hadoop-0.19.0-examples.jar wordcount /user/你的用户名/input /user/你的用户名/output
?????????? 下载结果:bin/hadoop fs -copyToLocal output output
?????????? 查看结果 cat output/*
???? 5、通过Web UI查看集群的状态:
??????????? jobtraker的情况: http://namenode的ip地址:50030;
??????????? hdfs的情况:http://namenode的ip地址:50070;
??????????? tasktracker的情况:http://datanode的ip地址:50060.
???? 6、bin/stop-all.sh:关闭集群,停止守护进程.