您的位置:首页 > 运维架构 > Linux

CentOS的Hadoop集群配置(一)

2013-03-17 21:42 399 查看
参考网站:http://blog.csdn.net/inte_sleeper/article/details/6569985

参考资料:

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, datanode, task tracker, job tracker,secondary name node;

slave1上运行data node, tasktracker。

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

1. 安装JDK*

yum installjava-1.6.0-openjdk-devel

2. 设置环境变量*

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

#exportJAVA_HOME="/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64"

exportJAVA_HOME="/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0"

exportPATH=$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中:

catid_rsa.pub >> authorized_keys

chmod 644authorized_keys #重要

编辑sshd配置文件/etc/ssh/sshd_config,把#AuthorizedKeysFile .ssh/authorized_keys前面的注释取消掉。

重启sshd服务:

servicesshd restart

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

sshlocalhost

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.pubroot@slave1

测试SSH连接:

在master上运行:

ssh slave1

在slave1上运行:

ssh master

6. 安装Hadoop

下载hadoop安装包:

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

mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-1.1.2/hadoop-1.1.2.tar.gz (新)

复制安装包至slave1:

scphadoop-0.20.203.0rc1.tar.gz root@slave1:/root/

解压:

tar xzvfhadoop-0.20.203.0rc1.tar.gz

mkdir /usr/local/hadoop

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

修改.bashrc文件(位于用户目录下,即~/.bashrc,对于root,即为/root/.bashrc)

添加环境变量:

exportHADOOP_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 -Rhadoop: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 -jvmserver $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

12041TaskTracker
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: