在Redhat AS6上搭建Hadoop集群总结

本文详细记录了使用 Redhat AS6 和 VMware 在家中搭建三节点 Hadoop 集群的过程,包括虚拟机配置、SSH 密钥设置、Java 安装、Hadoop 配置文件调整及环境变量设置等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在Redhat AS6上搭建Hadoop集群总结

分类: Hadoop 1174人阅读 评论(3) 收藏 举报

于本周末在家里的两台电脑上用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:

  1. <?xml version="1.0"?> 
  2. <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> 
  3.  
  4. <!-- Put site-specific property overrides in this file. --> 
  5. <configuration> 
  6.      <property> 
  7.           <name>hadoop.tmp.dir</name> 
  8.           <value>/home/zhangzk/hadoop-0.21.0/hadooptmp</value> 
  9.      </property> 
  10.      <property> 
  11.           <name>fs.default.name</name> 
  12.           <value>hdfs://zhangzk01:9000</value>  
  13.      </property> 
  14. </configuration> 


hdfs-site.xml:






  1. <?xml version="1.0"?> 
  2. <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> 
  3. <!-- Put site-specific property overrides in this file. --> 
  4. <configuration> 
  5.      <property> 
  6.           <name>dfs.name.dir</name> 
  7.           <value>/home/zhangzk/hadoop-0.21.0/hadoopname</value> 
  8.      </property> 
  9.      <property> 
  10.           <name>dfs.data.dir</name> 
  11.           <value>/home/zhangzk/hadoop-0.21.0/hadoopdata</value> 
  12.      </property> 
  13.      <property> 
  14.           <name>dfs.replication</name> 
  15.           <value>2</value> 
  16.      </property> 
  17. </configuration> 


mapred-site.xml:






  1. <?xml version="1.0"?> 
  2. <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> 
  3.  
  4. <!-- Put site-specific property overrides in this file. --> 
  5. <configuration> 
  6.      <property> 
  7.           <name>mapred.jobtracker.address</name> 
  8.           <value>zhangzk01:9001</value> 
  9.      </property> 
  10. </configuration> 


masters:






  1. zhangzk01 


slaves:






  1. zhangzk02 
  2. zhangzk03 



5、设置Hadoop环境变量


将本地配置好的hadoop-0.21.0目录复制到zhangzk01、zhangzk02、zhangzk03上的目录/home/zhangzk下,保证hadoop的配置文件目录conf的物理路径为/home/zhangzk/hadoop-0.21.0/conf。


分别在上述3个节点机器上配置hadoop的环境变量。






  1. export HADOOP_HOME=/home/zhangzk/hadoop-0.21.0 
  2. 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.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值