共计 5051 个字符,预计需要花费 13 分钟才能阅读完成。
Hadoop2.7.1 集群部署及自动化脚本
实验环境
操作系统:Ubuntu 14.04 64 位
主机名 | IP |
---|---|
namenode | 10.107.12.10 |
datanode1 | 10.107.12.20 |
datanode2 | 10.107.12.50 |
datanode3 | 10.107.12.60 |
jdk 安装
实验安装的是 jdk1.7.0_71 版本,具体安装步骤及环境变量设置参考这里。http://www.linuxidc.com/Linux/2016-07/132852.htm
SSH 无密登录
下面是我写的一个自动化 SSH 无密登录脚本,运行脚本前需要安装 expect
包,ubuntu 系统下直接执行:sudo apt-get install expect
就可以了。该脚本运行在 namenode 上,运行时只需要将 IP_1 改成对应的 datanode 地址,PWD_1是对应 datanode 密码。
# NO_PWD_SSH
#!/bin/sh
IP_1=10.107.12.20,10.107.12.50,10.107.12.60
PWD_1=111111
key_generate() {expect -c "set timeout -1;
spawn ssh-keygen -t dsa;
expect {{Enter file in which to save the key*} {send -- \r;exp_continue}
{Enter passphrase*} {send -- \r;exp_continue}
{Enter same passphrase again:} {send -- \r;exp_continue}
{Overwrite (y/n)*} {send -- n\r;exp_continue}
eof {exit 0;}
};"
}
auto_ssh_copy_id () {expect -c "set timeout -1;
spawn ssh-copy-id -i $HOME/.ssh/id_dsa.pub root@$1;
expect {{Are you sure you want to continue connecting *} {send -- yes\r;exp_continue;}
{*password:} {send -- $2\r;exp_continue;}
eof {exit 0;}
};"
}
rm -rf ~/.ssh
key_generate
ips_1=$(echo $IP_1 | tr ',' ' ')
for ip in $ips_1
do
auto_ssh_copy_id $ip $PWD_1
done
eval &(ssh-agent)
ssh-add
安装 Hadoop2.7.1
1. 下载 Hadoop2.7.1
下载地址点这里。
2. 解压安装
tar zxvf hadoop-2.7.1.tar.gz
解压,解压后放在了 /root/spark_sdk/
目录下,并在 hadoop-2.7.1 目录下建立 tmp、hdfs/namenode、hdfs/datanode 目录,命令如下:
mkdir ./hadoop-2.7.1/tmp
mkdir ./hadoop-2.7.1/hdfs
mkdir ./hadoop-2.7.1/hdfs/datanode
mkdir ./hadoop-2.7.1/hdfs/namenode
3. 设置环境变量
在 ~/.bashrc
文件中加入如下两条命令:
export HADOOP_HOME=/root/spark_sdk/hadoop-2.7.1
PATH=$PATH:$HADOOP_HOME/bin
使环境变量生效:source ~/.bashrc
4. 设置主机名 && hosts 文件
主机名
将/etc/hostname
中主机名依次修改为 namenode,datanode1,datanode2,datanode3。
hosts 文件
将/etc/hosts
文件中加入如下命令:
10.107.12.10 namenode
10.107.12.20 datanode1
10.107.12.50 datanode2
10.107.12.60 datanode3
注意主机名必须和 hosts 文件中名称保持一致!!
5. 修改 Hadoop 配置文件
hadoop-env.sh 文件
export Java_HOME=/root/spark_sdk/jdk1.7.0_71
yarn-env.sh 文件
export JAVA_HOME=/root/spark_sdk/jdk1.7.0_71
core-site.xml 文件
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://namenode:9000</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131702</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/root/spark_sdk/hadoop-2.7.1/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
</configuration>
这里有一个地方需要注意,最后设置 hadoop.proxyuser
时,后面跟的是 用户名,我是用 root 用户登录的,所以填的是 root。
hdfs-site.xml 文件
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/root/spark_sdk/hadoop-2.7.1/hdfs/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/root/spark_sdk/hadoop-2.7.1/hdfs/datanode</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>namenode:9001</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>
mapred-site.xml 文件
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
yarn-site.xml 文件
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>namenode:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>namenode:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>namenode:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>namenode:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>namenode:8088</value>
</property>
</configuration>
slaves 文件
datanode1
datanode2
datanode3
6. 启动 Hadoop
先格式化 namenode,然后依次启动 hdfs 和 yarn。
bin/hadoop namenode -format
sbin/start-dfs.sh
sbin/start-yarn.sh
7. 集群启动验证
namenode 上执行 jps
命令,可以查询到有如下进程:
15746 SecondaryNameNode
15508 NameNode
15969 ResourceManager
16377 Jps
datanode 上执行 jps
命令,可以查询到有如下进程:
14731 Jps
14421 NodeManager
14182 DataNode
8. 查询集群信息 && 关闭集群
可以在浏览器中输入:10.107.12.10:50070
查询 HDFS 相关信息,这里 10.107.12.10 是 namenode 的 IP 地址。浏览器输入:10.107.12.10:8088
查看 yarn 的启动情况。
关闭集群可以执行sbin/stop-all.sh
。
9. 运行应用程序
启动集群后,切换到 hadoop 主目录,执行 ./bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.1.jar pi 20 10
,运行成功后会输出 Pi 的值,结果如下:
【完】
下面关于 Hadoop 的文章您也可能喜欢,不妨看看:
Ubuntu14.04 下 Hadoop2.4.1 单机 / 伪分布式安装配置教程 http://www.linuxidc.com/Linux/2015-02/113487.htm
CentOS 安装和配置 Hadoop2.2.0 http://www.linuxidc.com/Linux/2014-01/94685.htm
Ubuntu 13.04 上搭建 Hadoop 环境 http://www.linuxidc.com/Linux/2013-06/86106.htm
Ubuntu 12.10 +Hadoop 1.2.1 版本集群配置 http://www.linuxidc.com/Linux/2013-09/90600.htm
Ubuntu 上搭建 Hadoop 环境(单机模式 + 伪分布模式)http://www.linuxidc.com/Linux/2013-01/77681.htm
Ubuntu 下 Hadoop 环境的配置 http://www.linuxidc.com/Linux/2012-11/74539.htm
单机版搭建 Hadoop 环境图文教程详解 http://www.linuxidc.com/Linux/2012-02/53927.htm
更多 Hadoop 相关信息见Hadoop 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=13
本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-07/132851.htm