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
参考资料:
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
相关文章推荐
- CentOS6.4配置Hadoop-2.6.0集群配置安装指南
- CentOS系统下的Hadoop集群(第3期)_VSFTP安装配置
- Centos6.4 +Hadoop 1.2.1集群完全分布模式配置
- Hadoop集群(第1期)_CentOS安装配置
- Hadoop集群安装配置教程_Hadoop2.6.0_Ubuntu/CentOS
- Hadoop集群(第1期)_CentOS安装配置
- Hadoop集群(第1期)_CentOS安装配置
- centos 6.3下安装Hadoop 2.7.1并配置伪分布式集群
- Hadoop集群(第1期)_CentOS安装配置
- Hadoop集群安装(四)--------CentOS基本配置
- CentOS系统下的Hadoop集群(第1期)_CentOS安装配置
- Hadoop集群安装(六)--------CentOS配置SSH无密码登录
- CentOS系统下Hadoop 2.4.1集群安装配置(简易版)
- 01_note_Hadoop集群2.8.1的安装配置, JDK安装, 免密码登录 (CentOS7)
- Hadoop集群安装配置教程_Hadoop2.6.0_Ubuntu/CentOS
- Hadoop集群(第1期)_CentOS安装配置
- centos 6.3下安装Hadoop 2.7.1并配置伪分布式集群
- Centos7下Hadoop的配置(单机,伪分布式和集群)
- CentOS下安装与配置Ganglia监控Hadoop集群及HBase
- Hadoop集群_CentOS安装配置