现在的位置: 首页 > 综合 > 正文

CentOS的Hadoop集群配置(一)

2014年03月16日 ⁄ 综合 ⁄ 共 4588字 ⁄ 字号 评论关闭

参考资料:

http://www.michael-noll.com/tutorials/running-hadoop-on-ubuntu-linux-single-node-cluster/

http://www.michael-noll.com/tutorials/running-hadoop-on-ubuntu-linux-multi-node-cluster/

http://www.michael-noll.com/tutorials/writing-an-hadoop-mapreduce-program-in-python/

http://hadoop.apache.org/common/docs/current/cluster_setup.html

 

以下集群配置内容,以两台机器为例。其中一台是
master
,另一台是
slave1

master
上运行
name node, data
node, task tracker, job tracker


secondary name node

slave1
上运行
data node, task
tracker

 

前面加
*
表示对两台机器采取相同的操作

1.      



安装
JDK
*

yum install
java-1.6.0-openjdk-devel

 

2.      



设置环境变量
*

编辑
/etc/profile
文件,设置
JAVA_HOME
环境变量以及类路径:

export
JAVA_HOME="/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64"

export
PATH=$PATH:$JAVA_HOME/bin

export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar

 

3.      



添加
hosts
的映射
*

编辑
/etc/hosts
文件,注意

host name

不要有下划线,见下步骤
9

192.168.225.16 master

192.168.225.66 slave1

 

4.      



配置
SSH
*

cd /root
& mkdir .ssh

chmod 700
.ssh & cd .ssh

 

创建密码为空的
RSA
密钥对:

ssh-keygen
-t rsa -P ""

在提示的对称密钥名称中输入
id_rsa

将公钥添加至
authorized_keys
中:

cat
id_rsa.pub >> authorized_keys

chmod 644
authorized_keys #

重要

 

编辑
sshd
配置文件
/etc/ssh/sshd_config
,把
#AuthorizedKeysFile 
.ssh/authorized_keys

前面的注释取消掉。

重启
sshd
服务:

service
sshd restart

 

测试
SSH
连接。连接时会提示是否连接,按回车后会将此公钥加入至
knows_hosts
中:

ssh
localhost

 

5.      



配置
master

slave1

ssh
互通


slave1
中重复步骤
4
,然后把
slave1
中的
.ssh/authorized_keys
复制至
master

.ssh/authorized_keys
中。注意复制过去之后,要看最后的类似
root@localhost
的字符串,修改成
root@slave1
。同样将
master

key
也复制至
slave1
,并将最后的串修改成
root@master

 

或者使用如下命令:

ssh-copy-id -i ~/.ssh/id_rsa.pub
root@slave1

 

测试
SSH
连接:


master
上运行:

ssh slave1


slave1
上运行:

ssh master

 

6.     



安装
Hadoop

下载
hadoop
安装包:

wget

http://mirror.bjtu.edu.cn/apache/hadoop/common/hadoop-0.20.203.0/hadoop-0.20.203.0rc1.tar.gz

 

复制安装包至
slave1

scp
hadoop-0.20.203.0rc1.tar.gz root@slave1:/root/

 

解压:

tar xzvf
hadoop-0.20.203.0rc1.tar.gz

mkdir /usr/local/hadoop

mv hadoop-0.20.203.0/* /usr/local/hadoop

 

        

修改
.bashrc
文件(位于用户目录下,即

~/.bashrc

,对于
root
,即为
/root/.bashrc

        

添加环境变量:

        

export
HADOOP_HOME=/usr/local/hadoop

   
export PATH=$PATH:$HADOOP_HOME/bin

        

 

7.     



配置
Hadoop
环境变量
*

以下所有
hadoop

目录下的文件,均以相对路径
hadoop

开始

修改
hadoop/conf/hadoop-env.sh
文件,将里面的
JAVA_HOME
改成步骤
2
中设置的值。

 

8.      



创建
Hadoop
本地临时文件夹
*

mkdir /root/hadoop_tmp

注意这一步,千万不要放在

/tmp

目录下面!!因为

/tmp

默认分配的空间是很小的,往

hdfs

里放几个大文件就会导致空间满了,就会报错)

修改权限:

chown -R
hadoop:hadoop /root/hadoop_tmp

更松地,也可以这样:

chmod –R 777
/root/hadoop_tmp

 

 

9.     



配置
Hadoop

修改
master

hadoop/conf/core-site.xml
,在
<configuration>
节中添加如下内容:

注意:
fs.default.name

的值不能带下划线

<property>

   
<name>hadoop.tmp.dir</name>

   
<value>/root/hadoop_tmp/hadoop_${user.name}</value>

</property>

<property>

   
<name>fs.default.name</name>

   

<value>hdfs://localhost:54310</value> 

</property>

<property>

   
<name>io.sort.mb</name>

   
<value>1024</value> 

</property>

        

其中
io.sort.mb
值,指定了排序使用的内存,大的内存可以加快
job
的处理速度。

 

        

修改
hadoop/conf/mapred-site.xml
,在
<configuration>

节中添加如下内容:

<property>

   
<name>mapred.job.tracker</name>

   
<value>localhost:54311</value>

</property>

<property>

   

<name>mapred.map.child.java.opts</name>

   
<value>-Xmx4096m</value>

</property>

<property>

   

<name>mapred.reduce.child.java.opts</name>

   
<value>-Xmx4096m</value>

</property>

        

其中
mapred.map.child.java.opts,
mapred.reduce.child.java.opts

分别指定
map/reduce
任务使用的最大堆内存。较小的内存可能导致程序抛出
OutOfMemoryException

 

修改
conf/hdfs -site.xml
,在
<configuration>

节中添加如下内容:

<property>

   
<name>dfs.replication</name>

   
<value>2</value>

</property>

 

同样,修改
slave1

/usr/local/hadoop/conf/core-site.xml
,在
<configuration>
节中添加如下内容:

<property>

   
<name>hadoop.tmp.dir</name>

   
<value>/root/hadoop_tmp/hadoop_${user.name}</value>

</property>

<property>

   
<name>fs.default.name</name>

   
<value>hdfs://localhost:54310</value> 

</property>

<property>

   
<name>io.sort.mb</name>

   
<value>1024</value> 

</property>

 

        

修改
conf/mapred-site.xml
,在
<configuration>

节中添加如下内容:

<property>

   
<name>mapred.job.tracker</name>

   
<value>localhost:54311</value>

</property>

<property>

   

<name>mapred.map.child.java.opts</name>

   
<value>-Xmx4096m</value>

</property>

<property>

   

<name>mapred.reduce.child.java.opts</name>

   
<value>-Xmx4096m</value>

</property>

 

        

修改
conf/hdfs
-site.xml

,在
<configuration>
节中添加如下内容:

<property>

   
<name>dfs.replication</name>

   
<value>2</value>

   
</property>

 

10.  



修改
hadoop/bin/hadoop
文件


221
行修改成如下。因为对于
root
用户,
-jvm
参数是有问题的,所以需要加一个判断
(
或者以非
root
用户运行这个脚本也没问题
)

HADOOP_OPTS="$HADOOP_OPTS
-jvm server $HADOOP_DATANODE_OPTS" 

à

   
#for root, -jvm option is invalid.

   
CUR_USER=`whoami`

   
if [ "$CUR_USER" =
"root" ]; then

       
HADOOP_OPTS="$HADOOP_OPTS -server
$HADOOP_DATANODE_OPTS"

   
else

       
HADOOP_OPTS="$HADOOP_OPTS -jvm
server $HADOOP_DATANODE_OPTS"

   
fi 

unset $CUR_USER

 

至此,
master

slave1
都已经完成了
single_node
的搭建,可以分别在两台机器上测试单节点。

启动节点:

hadoop/bin/start-all.sh

运行
jps
命令,应能看到类似如下的输出:

937 DataNode

9232 Jps

8811 NameNode

12033 JobTracker

12041
TaskTracker

抱歉!评论已关闭.