在Redhat AS6上搭建Hadoop集群总结
2011-05-08 21:42
651 查看
于本周末在家里的两台电脑上用Vmware+Redhat As6 + hadoop-0.21.0上搭建了一个3节点的Hadoop集群,虽说是原来已经搭建过类似的集群了,也跑过JavaAPI来操作HDFS与Map/reduce,但是这一次依然是受到挑战了,好些小细节,稍有遗漏就会有如坐过山车一般大起大落。故此,记下本次的操作的几个步骤,以供后续参考。
1、建3个VM的虚拟机,保证互联互通
IP address:192.168.43.201 hostname :zhangzk01
IP address:192.168.43.202 hostname :zhangzk02
IP address:192.168.43.203 hostname :zhangzk03
以zhangzk01为namenode节点,zhangzk02与zhangzk03为datanode。
zhangzk01机器的/etc/hosts文件内容修改为如下形式:
127.0.0.1 localhost localhost.localdomain localhost
192.168.43.201 zhangzk01 zhangzk01.localdomain zhangzk01
192.168.43.202 zhangzk02
192.168.43.203 zhangzk03
zhangzk02机器的/etc/hosts文件内容修改为如下形式:
127.0.0.1 localhost localhost.localdomain localhost
192.168.43.202 zhangzk02 zhangzk02.localdomain zhangzk02
192.168.43.201 zhangzk01
192.168.43.203 zhangzk03
zhangzk03机器的/etc/hosts文件内容修改为如下形式:
127.0.0.1 localhost localhost.localdomain localhost
192.168.43.203 zhangzk03 zhangzk03.localdomain zhangzk03
192.168.43.201 zhangzk01
192.168.43.202 zhangzk02
2、保证Master/Slave机器之间可以通过SSH无密钥互相访问
在3台机器上建立一个相同的用户,zhangzk,家目录为/home/zhangzk。
zhangzk01:
以用户zhangzk登录zhangzk01,在家目录下执行下述命令:
ssh-keygen -t rsa
一路回车下去即可在目录/home/zhangzk/.ssh/下建立两个文件 id_rsa.pub和id_rsa。
接下来,需要进入/home/zhangzk/.ssh目录,执行如下命令:
cd .ssh
再把is_rsa.pub文件复制到zhangzk02和zhangzk03机器上去。
scp -r id_rsa.pub zhangzk@zhangzk03:/home/zhangzk/.ssh/authorized_keys_zhangzk01
scp -r id_rsa.pub zhangzk@zhangzk02:/home/zhangzk/.ssh/authorized_keys_zhangzk01
zhangzk02:
以用户zhangzk登录zhangzk02,在目录下执行命令:
ssh-keygen -t rsa
一路回车下去即可在目录/home/zhangzk/.ssh/下建立两个文件 id_rsa.pub和id_rsa。
接下来,需要进入/home/zhangzk/.ssh目录,执行如下命令:
cd .ssh
再把is_rsa.pub文件复制到zhangzk01机器上去。
scp -r id_rsa.pub zhangzk@zhangzk01:/home/zhangzk/.ssh/authorized_keys_zhangzk02
zhangzk03:
以用户zhangzk登录zhangzk03,在目录下执行命令:
ssh-keygen -t rsa
一路回车下去即可在目录/home/zhangzk/.ssh/下建立两个文件 id_rsa.pub和id_rsa。
接下来,需要进入/home/zhangzk/.ssh目录,执行如下命令:
cd .ssh
再把is_rsa.pub文件复制到zhangzk01机器上去。
scp -r id_rsa.pub zhangzk@zhangzk01:/home/zhangzk/.ssh/authorized_keys_zhangzk03
*******************************************************************************
上述方式分别为zhangzk01/zhangzk02/zhangzk03机器生成了rsa密钥,并且把zhangzk01的id_rsa.pub复制到zhangzk02/zhangzk03上去了,而把zhangzk02和zhangzk03上的id_rsa.pub复制到zhangzk01上去了。
接下来还要完成如下步骤:
zhangzk01:
以zhangzk用户登录zhangzk01,并且进入目录/home/zhangzk/.ssh下,执行如下命令:
cat id_rsa.pub >> authorized_keys
cat authorized_keys_zhangzk02 >> authorized_keys
cat authorized_keys_zhangzk03 >> authorized_keys
chmod 644 authorized_keys
zhangzk02:
以zhangzk用户登录zhangzk02,并且进入目录/home/zhangzk/.ssh下,执行如下命令:
cat id_rsa.pub >> authorized_keys
cat authorized_keys_zhangzk01 >> authorized_keys
chmod 644 authorized_keys
zhangzk03:
以zhangzk用户登录zhangzk03,并且进入目录/home/zhangzk/.ssh下,执行如下命令:
cat id_rsa.pub >> authorized_keys
cat authorized_keys_zhangzk01 >> authorized_keys
chmod 644 authorized_keys
通过上述配置,现在以用户zhangzk登录zhangzk01即可以无密钥认证方式访问zhangzk02和zhangzk03了,同样也可以在zhangzk02和zhangzk03上以ssh zhangzk01方式连接到zhangzk01上进行访问了。
3、配置Java虚拟机
分别在3个机器节点上安装java。
我安装的是jdk-6u25-linux-x64-rpm.bin。
在/home/zhangzk/.bashrc中配置如下环境变量:
export JAVA_HOME=/usr/java/jdk1.6.0_25
export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
执行java -version可以看到如下结果则表示成功!
[zhangzk@zhangzk01 software]$ java -version
java version "1.6.0_25"
Java(TM) SE Runtime Environment (build 1.6.0_25-b06)
Java HotSpot(TM) 64-Bit Server VM (build 20.0-b11, mixed mode)
4、配置Hadoop的配置文件
先在本地修改好hadoop的配置文件,即hadoop-0.21.0/conf下的文件core-site.xml、hdfs-site.xml、mapred-site.xml、masters、slaves内容。
core-site.xml:
hdfs-site.xml:
mapred-site.xml:
1.0.3版本需要使用如下变更:
将<name>mapred.jobtracker.address</name>修改为<name>mapred.job.tracker</name>
masters:
slaves:
5、设置Hadoop环境变量
将本地配置好的hadoop-0.21.0目录复制到zhangzk01、zhangzk02、zhangzk03上的目录/home/zhangzk下,保证hadoop的配置文件目录conf的物理路径为/home/zhangzk/hadoop-0.21.0/conf。
分别在上述3个节点机器上配置hadoop的环境变量。
6、启动HDFS和Mapreduce,并且查看集群状态
1)格式化文件系统
[zhangzk@zhangzk01 bin]$ hdfs namenode -format
注意:格式化时要防止NameNode的namespace ID与DataNode的namespace ID的不一致,因为每格式化一次会产生Name、Data、tmp等临时文件记录信息,多次格式化会产生很多,会导致ID的不同,造成hadoop不能运行
2)启动hadoop
[zhangzk@zhangzk01 bin]$ start-dfs.sh
[zhangzk@zhangzk01 bin]$ start-mapred.sh
3)用jps命令查看进程,NameNode上的结果如下:
5334 JobTracker
5215 SecondaryNameNode
5449 Jps
5001 NameNode
4)查看集群状态
[zhangzk@zhangzk01 bin]$ hdfs dfsadmin -report
确保运行的DataNode个数是正确的,我的是2个,这样可以查看哪个DataNode没有运行
7、遇到的问题与解决办法
遇到过两个问题:
(1)zhangzk01上的防火墙没有关闭
No route to host
(2)/etc/hosts中的文件被自动修改
org.apache.hadoop.ipc.RPC: Server at zhangzk01/192.168.43.201:9000 not available yet, Zzzzz.
我在装hadoop-1.0.3的过程中也是在这里遇到问题了,这里是重点灾区了,不通的时候就检查/etc/hosts,百分之一百是这里错了!
Hadoop运维参考:
hadoop集群管理之 添加节点datanode
hadoop集群管理之 删除节点
hadoop集群管理之 Hadoop回收站trash
2012华东运维技术大会的资料--hadoop运维经验分享
1、建3个VM的虚拟机,保证互联互通
IP address:192.168.43.201 hostname :zhangzk01
IP address:192.168.43.202 hostname :zhangzk02
IP address:192.168.43.203 hostname :zhangzk03
以zhangzk01为namenode节点,zhangzk02与zhangzk03为datanode。
zhangzk01机器的/etc/hosts文件内容修改为如下形式:
127.0.0.1 localhost localhost.localdomain localhost
192.168.43.201 zhangzk01 zhangzk01.localdomain zhangzk01
192.168.43.202 zhangzk02
192.168.43.203 zhangzk03
zhangzk02机器的/etc/hosts文件内容修改为如下形式:
127.0.0.1 localhost localhost.localdomain localhost
192.168.43.202 zhangzk02 zhangzk02.localdomain zhangzk02
192.168.43.201 zhangzk01
192.168.43.203 zhangzk03
zhangzk03机器的/etc/hosts文件内容修改为如下形式:
127.0.0.1 localhost localhost.localdomain localhost
192.168.43.203 zhangzk03 zhangzk03.localdomain zhangzk03
192.168.43.201 zhangzk01
192.168.43.202 zhangzk02
2、保证Master/Slave机器之间可以通过SSH无密钥互相访问
在3台机器上建立一个相同的用户,zhangzk,家目录为/home/zhangzk。
zhangzk01:
以用户zhangzk登录zhangzk01,在家目录下执行下述命令:
ssh-keygen -t rsa
一路回车下去即可在目录/home/zhangzk/.ssh/下建立两个文件 id_rsa.pub和id_rsa。
接下来,需要进入/home/zhangzk/.ssh目录,执行如下命令:
cd .ssh
再把is_rsa.pub文件复制到zhangzk02和zhangzk03机器上去。
scp -r id_rsa.pub zhangzk@zhangzk03:/home/zhangzk/.ssh/authorized_keys_zhangzk01
scp -r id_rsa.pub zhangzk@zhangzk02:/home/zhangzk/.ssh/authorized_keys_zhangzk01
zhangzk02:
以用户zhangzk登录zhangzk02,在目录下执行命令:
ssh-keygen -t rsa
一路回车下去即可在目录/home/zhangzk/.ssh/下建立两个文件 id_rsa.pub和id_rsa。
接下来,需要进入/home/zhangzk/.ssh目录,执行如下命令:
cd .ssh
再把is_rsa.pub文件复制到zhangzk01机器上去。
scp -r id_rsa.pub zhangzk@zhangzk01:/home/zhangzk/.ssh/authorized_keys_zhangzk02
zhangzk03:
以用户zhangzk登录zhangzk03,在目录下执行命令:
ssh-keygen -t rsa
一路回车下去即可在目录/home/zhangzk/.ssh/下建立两个文件 id_rsa.pub和id_rsa。
接下来,需要进入/home/zhangzk/.ssh目录,执行如下命令:
cd .ssh
再把is_rsa.pub文件复制到zhangzk01机器上去。
scp -r id_rsa.pub zhangzk@zhangzk01:/home/zhangzk/.ssh/authorized_keys_zhangzk03
*******************************************************************************
上述方式分别为zhangzk01/zhangzk02/zhangzk03机器生成了rsa密钥,并且把zhangzk01的id_rsa.pub复制到zhangzk02/zhangzk03上去了,而把zhangzk02和zhangzk03上的id_rsa.pub复制到zhangzk01上去了。
接下来还要完成如下步骤:
zhangzk01:
以zhangzk用户登录zhangzk01,并且进入目录/home/zhangzk/.ssh下,执行如下命令:
cat id_rsa.pub >> authorized_keys
cat authorized_keys_zhangzk02 >> authorized_keys
cat authorized_keys_zhangzk03 >> authorized_keys
chmod 644 authorized_keys
zhangzk02:
以zhangzk用户登录zhangzk02,并且进入目录/home/zhangzk/.ssh下,执行如下命令:
cat id_rsa.pub >> authorized_keys
cat authorized_keys_zhangzk01 >> authorized_keys
chmod 644 authorized_keys
zhangzk03:
以zhangzk用户登录zhangzk03,并且进入目录/home/zhangzk/.ssh下,执行如下命令:
cat id_rsa.pub >> authorized_keys
cat authorized_keys_zhangzk01 >> authorized_keys
chmod 644 authorized_keys
通过上述配置,现在以用户zhangzk登录zhangzk01即可以无密钥认证方式访问zhangzk02和zhangzk03了,同样也可以在zhangzk02和zhangzk03上以ssh zhangzk01方式连接到zhangzk01上进行访问了。
3、配置Java虚拟机
分别在3个机器节点上安装java。
我安装的是jdk-6u25-linux-x64-rpm.bin。
在/home/zhangzk/.bashrc中配置如下环境变量:
export JAVA_HOME=/usr/java/jdk1.6.0_25
export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
执行java -version可以看到如下结果则表示成功!
[zhangzk@zhangzk01 software]$ java -version
java version "1.6.0_25"
Java(TM) SE Runtime Environment (build 1.6.0_25-b06)
Java HotSpot(TM) 64-Bit Server VM (build 20.0-b11, mixed mode)
4、配置Hadoop的配置文件
先在本地修改好hadoop的配置文件,即hadoop-0.21.0/conf下的文件core-site.xml、hdfs-site.xml、mapred-site.xml、masters、slaves内容。
core-site.xml:
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <!-- Put site-specific property overrides in this file. --> <configuration> <property> <name>hadoop.tmp.dir</name> <value>/home/zhangzk/hadoop-0.21.0/hadooptmp</value> </property> <property> <name>fs.default.name</name> <value>hdfs://zhangzk01:9000</value> </property> </configuration>
hdfs-site.xml:
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <!-- Put site-specific property overrides in this file. --> <configuration> <property> <name>dfs.name.dir</name> <value>/home/zhangzk/hadoop-0.21.0/hadoopname</value> </property> <property> <name>dfs.data.dir</name> <value>/home/zhangzk/hadoop-0.21.0/hadoopdata</value> </property> <property> <name>dfs.replication</name> <value>2</value> </property> </configuration>
mapred-site.xml:
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <!-- Put site-specific property overrides in this file. --> <configuration> <property> <name>mapred.jobtracker.address</name> <value>zhangzk01:9001</value> </property> </configuration>
1.0.3版本需要使用如下变更:
将<name>mapred.jobtracker.address</name>修改为<name>mapred.job.tracker</name>
masters:
zhangzk01
slaves:
zhangzk02 zhangzk03
5、设置Hadoop环境变量
将本地配置好的hadoop-0.21.0目录复制到zhangzk01、zhangzk02、zhangzk03上的目录/home/zhangzk下,保证hadoop的配置文件目录conf的物理路径为/home/zhangzk/hadoop-0.21.0/conf。
分别在上述3个节点机器上配置hadoop的环境变量。
export HADOOP_HOME=/home/zhangzk/hadoop-0.21.0 export PATH=$HADOOP_HOME/bin:$PATH
6、启动HDFS和Mapreduce,并且查看集群状态
1)格式化文件系统
[zhangzk@zhangzk01 bin]$ hdfs namenode -format
注意:格式化时要防止NameNode的namespace ID与DataNode的namespace ID的不一致,因为每格式化一次会产生Name、Data、tmp等临时文件记录信息,多次格式化会产生很多,会导致ID的不同,造成hadoop不能运行
2)启动hadoop
[zhangzk@zhangzk01 bin]$ start-dfs.sh
[zhangzk@zhangzk01 bin]$ start-mapred.sh
3)用jps命令查看进程,NameNode上的结果如下:
5334 JobTracker
5215 SecondaryNameNode
5449 Jps
5001 NameNode
4)查看集群状态
[zhangzk@zhangzk01 bin]$ hdfs dfsadmin -report
确保运行的DataNode个数是正确的,我的是2个,这样可以查看哪个DataNode没有运行
7、遇到的问题与解决办法
遇到过两个问题:
(1)zhangzk01上的防火墙没有关闭
No route to host
(2)/etc/hosts中的文件被自动修改
org.apache.hadoop.ipc.RPC: Server at zhangzk01/192.168.43.201:9000 not available yet, Zzzzz.
我在装hadoop-1.0.3的过程中也是在这里遇到问题了,这里是重点灾区了,不通的时候就检查/etc/hosts,百分之一百是这里错了!
Hadoop运维参考:
Hadoop维护管理
Hadoop管理员的十个最佳实践
hadoop集群管理之 Namenode恢复hadoop集群管理之 添加节点datanode
hadoop集群管理之 删除节点
hadoop集群管理之 Hadoop回收站trash
2012华东运维技术大会的资料--hadoop运维经验分享
Hadoop-0.20.2 作业内存控制策略
Hadoop-0.21.0公平调度器算法分析
你应该知道的那些事:Apache Hadoop 2.0 (Alpha)发布了
Hadoop Kerberos安全机制介绍
下一代Apache Hadoop MapReduce框架的架构
相关文章推荐
- 在Redhat AS6上搭建Hadoop集群总结
- 在Redhat AS6上搭建Hadoop集群总结
- hadoop分布式集群搭建=两次的总结--包括挂载文件系统
- Hadoop集群搭建过程问题总结
- 【hadoop集群搭建和代码调试】总结17/2/18
- hadoop集群搭建总结
- Hadoop2.0集群、Hbase集群、Zookeeper集群、Hive工具、Sqoop工具、Flume工具搭建总结
- hadoop分布式集群搭建=两次的总结--包括挂载文件系统
- hadoop,hbase集群搭建的又一次总结
- 使用Docker在本地搭建Hadoop分布式集群 的错误总结(持续更新)
- hadoop 1.x集群搭建及搭建过程遇到的问题总结
- Hadoop-2.8.0集群搭建、hadoop源码编译和安装、host配置、ssh免密登录、hadoop配置文件中的参数配置参数总结、hadoop集群测试,安装过程中的常见错误
- hadoop集群搭建过程中所遇问题总结
- hadoop2.6.0 HA 高可靠集群环境搭建
- CentOS7 从零开始搭建 Hadoop2.7集群
- hadoop集群环境的搭建
- Hadoop2.2.0安装配置手册!完全分布式Hadoop集群搭建过程
- spark2.0.2基于hadoop2.4搭建分布式集群
- 克隆多台虚拟机搭建hadoop集群
- hadoop集群搭建