设为首页 收藏本站
查看: 1086|回复: 0

[经验分享] CentOS6.4上搭建hadoop-2.4.0集群

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-7-24 08:50:09 | 显示全部楼层 |阅读模式
公司Commerce Cloud平台上提供申请主机的服务。昨天试了下,申请了3台机器,搭了个hadoop环境。以下是机器的一些配置:

emi-centos-6.4-x86_64
medium | 6GB 内存| 2 虚拟内核 | 30.0GB 盘



3个机器的主机和ip规划如下:

IP地址           主机名    用途

192.168.0.101  hd1        namenode
192.168.0.102  hd2        datanode
192.168.0.103  hd3        datanode



一、系统设置

(所有步骤都需要在所有节点执行)

1. 修改主机名及ip地址解析

1) 修改主机名

[iyunv@hd1 toughhou]# hostname hd1

[iyunv@hd1 toughhou]# cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=hd1

2) 增加ip和主机映射


[iyunv@hd1 toughhou]# vi /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.0.101 hd1
192.168.0.102 hd2
192.168.0.103 hd3



3) 验证是否成功


[toughhou@hd1 ~]$ ping hd2
PING hd2 (192.168.0.102) 56(84) bytes of data.
64 bytes from hd2 (192.168.0.102): icmp_seq=1 ttl=63 time=2.55 ms

[toughhou@hd1 ~]$ ping hd3
PING hd3 (192.168.0.103) 56(84) bytes of data.
64 bytes from hd3 (192.168.0.103): icmp_seq=1 ttl=63 time=2.48 ms



能ping通说明已经OK。


2. 关闭防火墙
[iyunv@hd1 toughhou]# chkconfig iptables off



3. SSH免密码登陆

1) 生成密钥与公钥
登陆到hd1,把生成的id_rsa.pub(公钥)内容cat到authorized_keys文件中。同时登陆到hd2, hd3,生成id_rsa.pub,并把hd2, hd3各自的id_rsa.pub的内容copy到hd1中的authorzied_keys中。最后从hd1中scp到hd2, hd3的.ssh目录中。


[toughhou@hd1 ~]$ ssh-keygen -t rsa
[toughhou@hd1 ~]$ cat id_rsa.pub >> authorized_keys

[toughhou@hd2 ~]$ ssh-keygen -t rsa
[toughhou@hd2 ~]$ cat id_rsa.pub >> authorized_keys

[toughhou@hd3 ~]$ ssh-keygen -t rsa
[toughhou@hd3 ~]$ cat id_rsa.pub >> authorized_keys



2) scp authorized_keys到hd2, hd3

[toughhou@hd1 ~]$ scp authorized_keys 192.168.0.102:/home/toughhou/.ssh/
[toughhou@hd1 ~]$ scp authorized_keys 192.168.0.103:/home/toughhou/.ssh/

3) 验证ssh登陆是否是免密码

(第一次需要密码,若配置正确的话之后就不用密码了。)

[toughhou@hd1 ~]$ ssh 192.168.0.102
[toughhou@hd2 ~]$

[toughhou@hd1 ~]$ ssh 192.168.0.103
[toughhou@hd3 ~]$



关于SSH免密码登陆,也可以参考文章 “SSH时不需输入密码”,它更具体地说了关于SSH设置。



二、安装jdk、hadoop及设置环境变量

1. 下载jdk、hadoop安装包
download.oracle.com/otn-pub/java/jdk/7u65-b17/jdk-7u65-linux-x64.tar.gz
http://mirrors.cnnic.cn/apache/h ... hadoop-2.4.0.tar.gz


2. 解压

[toughhou@hd1 software]$ tar zxvf jdk-7u65-linux-x64.gz
[toughhou@hd1 software]$ tar zxvf hadoop-2.4.0.tar.gz

[iyunv@hd1 software]# mv hadoop-2.4.0 /opt/hadoop-2.4.0
[iyunv@hd1 software]# mv jdk1.7.0_65    /opt/jdk1.7.0


3. 设置Java环境变量

以root用户登陆编辑/etc/profile,加入以下内容:


[iyunv@hd1 software]# vi /etc/profile

#java
export JAVA_HOME=/opt/jdk1.7.0
export JRE_HOME=$JAVA_HOME/jre
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=./:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

#hadoop
export HADOOP_HOME=/opt/hadoop-2.4.0
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_YARN_HOME=$HADOOP_HOME
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HADOOP_HOME/lib
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native




4. 验证环境变量

[toughhou@hd1 hadoop]$ java -version

[toughhou@hd1 hadoop]$ hadoop
Usage: hadoop [--config confdir] COMMAND



三、hadoop集群设置

1. 修改hadoop配置文件

[toughhou@hd1 hadoop]$ cd /opt/hadoop-2.4.0/etc/hadoop

1) hadoop-env.sh、yarn-env.sh 设置JAVA_HOME环境变量

最开始以为已经在/etc/profile设置了JAVA_HOME,所以在hadoop-env.sh和yarn-env.sh中已经能成功获取到JAVA_HOME,所以就不用再设置了。最终发现这在hadoop-2.4.0中行不通,start-all.sh的时候出错了(hd1: Error: JAVA_HOME is not set and could not be found.)。

找到里面的JAVA_HOME,修改为实际路径


2) slaves
这个文件配置所有datanode节点,以便namenode搜索

[toughhou@hd1 hadoop]$ vi slaves
hd2
hd3

3) core-site.xml


<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hd1:9000</value>
    </property>
    <property>
        <name>io.file.buffer.size</name>
        <value>131072</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/hadoop/temp</value>
        <description>A base for other temporary directories.</description>
    </property>
    <property>
        <name>hadoop.proxyuser.root.hosts</name>
        <value>hd1</value>
    </property>
    <property>
        <name>hadoop.proxyuser.root.groups</name>
        <value>*</value>
    </property>
</configuration>



4) hdfs-site.xml


<configuration>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>/hadoop/name</value>
    <final>true</final>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>/hadoop/data</value>
    <final>true</final>
    </property>
    <property>
        <name>dfs.replication</name>
    <value>2</value>
    </property>
    <property>
        <name>dfs.permissions</name>
        <value>false</value>
    </property>
</configuration>



5) mapred-site.xml


<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hd1:9000</value>
    </property>
    <property>
        <name>io.file.buffer.size</name>
        <value>131072</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/hadoop/temp</value>
        <description>A base for other temporary directories.</description>
    </property>
    <property>
        <name>hadoop.proxyuser.root.hosts</name>
        <value>hd1</value>
    </property>
    <property>
        <name>hadoop.proxyuser.root.groups</name>
        <value>*</value>
    </property>
</configuration>



6) yarn-site.xml


<configuration>
<property>
<name>yarn.resourcemanager.address</name>
<value>hd1:18040</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>hd1:18030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>hd1:18025</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>hd1:18041</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>hd1:8088</value>
</property>
<property>
<name>yarn.nodemanager.local-dirs</name>
<value>/hadoop/mynode/my</value>
</property>
<property>
<name>yarn.nodemanager.log-dirs</name>
<value>/hadoop/mynode/logs</value>
</property>
<property>
<name>yarn.nodemanager.log.retain-seconds</name>
<value>10800</value>
</property>
<property>
<name>yarn.nodemanager.remote-app-log-dir</name>
<value>/logs</value>
</property>
<property>
<name>yarn.nodemanager.remote-app-log-dir-suffix</name>
<value>logs</value>
</property>
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>-1</value>
</property>
<property>
<name>yarn.log-aggregation.retain-check-interval-seconds</name>
<value>-1</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>





2. 把以下文件复制到其它节点


[iyunv@hd1 toughhou]# scp -R /opt/hadoop-2.4.0/ hd2:/opt/
[iyunv@hd1 toughhou]# scp -R /opt/hadoop-2.4.0/ hd3:/opt/

[iyunv@hd1 toughhou]# scp -R /opt/jdk1.7.0/ hd2:/opt/
[iyunv@hd1 toughhou]# scp -R /opt/jdk1.7.0/ hd3:/opt/

[iyunv@hd1 toughhou]# scp /etc/profile hd2:/etc/profile
[iyunv@hd1 toughhou]# scp /etc/profile hd3:/etc/profile

[iyunv@hd1 toughhou]# scp /etc/hosts hd2:/etc/hosts
[iyunv@hd1 toughhou]# scp /etc/hosts hd3:/etc/hosts



配置完成之后需要重启电脑



3. namenode初始化

只需要第一次的时候初始化,之后就不需要了

[toughhou@hd1 bin]$ hdfs namenode -format

如果“Exiting with status 0”,就说明OK。
14/07/23 03:26:33 INFO util.ExitUtil: Exiting with status 0


4. 启动集群


[toughhou@hd1 sbin]$ cd /opt/hadoop-2.4.0/sbin

[toughhou@hd1 sbin]$ ./start-all.sh

This script is Deprecated. Instead use start-dfs.sh and start-yarn.sh
Starting namenodes on [hd1]
hd1: namenode running as process 12580. Stop it first.
hd2: starting datanode, logging to /opt/hadoop-2.4.0/logs/hadoop-toughhou-datanode-hd2.out
hd3: starting datanode, logging to /opt/hadoop-2.4.0/logs/hadoop-toughhou-datanode-hd3.out
Starting secondary namenodes [0.0.0.0]
0.0.0.0: secondarynamenode running as process 12750. Stop it first.
starting yarn daemons
resourcemanager running as process 11900. Stop it first.
hd3: starting nodemanager, logging to /opt/hadoop-2.4.0/logs/yarn-toughhou-nodemanager-hd3.out
hd2: starting nodemanager, logging to /opt/hadoop-2.4.0/logs/yarn-toughhou-nodemanager-hd2.out
5. 查看各节点的状态


[toughhou@hd1 sbin]$ jps
16358 NameNode
16535 SecondaryNameNode
16942 Jps
16683 ResourceManage

[toughhou@hd2 ~]$ jps
2253 NodeManager
2369 Jps
2152 DataNode

[toughhou@hd3 ~]$ jps
2064 NodeManager
2178 Jps
1963 DataNode
以上说明都OK。
6. windows添加快捷访问
为了方便访问,我们也可以编辑 %systemroot%\system32\drivers\etc\hosts 文件,加入以下的 ip和主机映射
192.168.0.101 hd1
192.168.0.102 hd2
192.168.0.103 hd3
这样,我们在自己机器上也可以通过 http://hd2:8042/node 方式访问节点,而没必要用 http://192.168.0.102:8042/node
7. wordcount 测试

为了更进一步验证hadoop环境,我们可以运行hadoop自带的例子。

wordcount是hadoop最经典的mapreduce例子。我们进入到相应目录运行自带的jar包,来测试hadoop环境是否OK。

具体步骤:

1) hdfs上创建目录

[toughhou@hd1 ~]$ hadoop fs -mkdir /in/wordcount
[toughhou@hd1 ~]$ hadoop fs -mkdir /out/

2) 上传文件到hdfs

[toughhou@hd1 ~]$ cat in1.txt
Hello World , Hello China, Hello Shanghai
I love China
How are you

[toughhou@hd1 ~]$ hadoop fs -put in1.txt /in/wordcount

3) 运行wordcount
[toughhou@hd1 ~]$ cd /opt/hadoop-2.4.0/share/hadoop/mapreduce/
[toughhou@hd2 mapreduce]$ hadoop jar hadoop-mapreduce-examples-2.4.0.jar wordcount /in/wordcount /out/out1

14/07/23 10:42:36 INFO client.RMProxy: Connecting to ResourceManager at hd1/192.168.0.101:18040
14/07/23 10:42:38 INFO input.FileInputFormat: Total input paths to process : 2
14/07/23 10:42:38 INFO mapreduce.JobSubmitter: number of splits:2
14/07/23 10:42:38 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1406105556378_0003
14/07/23 10:42:38 INFO impl.YarnClientImpl: Submitted application application_1406105556378_0003
14/07/23 10:42:38 INFO mapreduce.Job: The url to track the job: http://hd1:8088/proxy/application_1406105556378_0003/
14/07/23 10:42:38 INFO mapreduce.Job: Running job: job_1406105556378_0003
14/07/23 10:42:46 INFO mapreduce.Job: Job job_1406105556378_0003 running in uber mode : false
14/07/23 10:42:46 INFO mapreduce.Job: map 0% reduce 0%
14/07/23 10:42:55 INFO mapreduce.Job: map 100% reduce 0%
14/07/23 10:43:01 INFO mapreduce.Job: map 100% reduce 100%
4) 查看运行结果
[toughhou@hd2 mapreduce]$ hadoop fs -cat /out/out4/part-r-00000
, 1
China 1
China, 1
Hello 3
How 1
I 1
Shanghai 1
World 1
are 1
love 1
you 1
到此,全部结束。整个hadoop-2.4.0集群搭建过程全部结束。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-22577-1-1.html 上篇帖子: [Linux][Hadoop] 将hadoop跑起来 下篇帖子: CentOS6.4编译Hadoop-2.4.0
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表