在Cent OS操作系统下配置Hadoop集群
以下集群配置内容,以两台机器为例。其中一台是namenode1,另一台是datanode1,datanode2。
namenode1上运行name node, data node, task tracker, job tracker,secondary name node;
datanode1和datanode2上运行data node, task tracker。
1. 安装jdk
yum install java-1.6.0-openjdk 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. 添加host dns解析
192.168.1.10 namenode1
192.168.1.11 datanode1
192.168.1.12 datanode2
3. 创建hadoop运行账号
useradd hadoop -g root
4. 产生ssh对称密钥
cd ~ && mkdir .ssh
chmod 700 .ssh && cd .ssh
创建密码为空的RSA密钥对:ssh-keygen -t rsa
在提示的对称密钥名称中输入 id_rsa
将公钥添加至authorized_keys中:cat id_rsa.pub >> authorized_keys
测试SSH连接。连接时会提示是否连接,按回车后会将此公钥加入至knows_hosts中:
ssh localhost
5. 配置namenode1和datanode1/datanode2的ssh互通
在namenode1节点上执行步骤1-4,然后通过scp命令把公钥发送到datanode1和datanode2上,
在datanode1和datanode2中执行步骤1-4,然后通过scp命令把公钥发到namenode1上,
scp id_rsa.pub namenode1:~/.ssh/id_rsa.pub
在namenode1,datanode1,datanode2节点执行公钥导入
cat id_rsa.pub >> authroized_keys
测试ssh连接:
在namenode1上执行: ssh datanode1, ssh datanode2
在datanode1/datanode2上执行: ssh namenode1
如果连接过程都不需要输入密码,说明设置成功,否则检查并请重新执行1-4步动作。
6. 安装hadoop
wget http://www.fayea.com/apache-mirror/hadoop/common/stable/hadoop-1.0.4-bin.tar.gz
tar zxvf hadoop-1.0.4-bin.tar.gz
7. 配置hadoop环境变量
编辑conf/hadoop-env.sh文件,设置JAVA_HOME为第2步指定的值
8. 修改hadoop配置文件
修改conf/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>fs.default.name</name> <value>hdfs://namenode1:9000</value> </property> </configuration>修改conf/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/hadoop/dfs/name</value> </property> <property> <name>dfs.data.dir</name> <value>/home/hadoop/dfs/data</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.job.tracker</name> <value>namenode1:9001</value> </property> </configuration>修改conf/master文件:把localhost换成namenode1
9. 同步配置
用下面的脚本完成所有hadoop节点的配置
hadoop_home='/home/hadoop/hadoop-1.0.4' for host in `cat ${hadoop_home}/conf/slaves` do echo ------------------------------------------------------------------ echo rsync host: $host ssh $host 'rm -fr $hadoop_home' rsync -avz $hadoop_home/* $host:$hadoop_home done
10. 格式化名称节点
$ bin/hadoop namenode -format
11. 启动hadoop服务
$ bin/start-all.sh
日志文件写入${hadoop_home}/logs.
从浏览器可以访问名称节点和任务检查web接口(应能看到两个数据节点,如果只有1个,说明配置不对):
- 名称节点 - http://localhost:50070/
- 任务检查 - http://localhost:50030/
12. 测试hadoop服务
拷贝本地文件到hdsf文件系统中:$ bin/hadoop fs -put conf input
启动测试程序:$ bin/hadoop jar hadoop-examples-*.jar grep input output 'dfs[a-z.]+'
可以从web接口中查看任务运行状态,等待任务完成后,查看结果
$ bin/hadoop fs -cat output/*
13. 停止hadoop服务
$ bin/stop-all.sh