Hadoop2.6.5集群部署实战指南
一、Hadoop分布式运行模式概述
Hadoop支持三种运行模式:本地模式、伪分布式模式和完全分布式模式。安装后默认采用本地模式,此时Hadoop使用本地文件系统而非HDFS,不启动任何守护进程,Map和Reduce任务在同一进程中执行,仅适用于单机开发或MapReduce程序调试。伪分布式模式下,所有进程运行于同一主机,但使用分布式文件系统,任务由JobTracker管理,副本数限制为1,常用于测试完全分布式逻辑。要发挥Hadoop最大性能,需部署完全分布式集群,且因ZooKeeper高可用要求奇数节点,至少需要3个节点。
二、环境准备
1. 部署环境
使用三台机器:master(192.168.1.250)、slave1(192.168.1.249)、slave2(192.168.1.248)。
2. 域名解析与防火墙配置(所有节点执行)
/etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.250 master
192.168.1.249 slave1
192.168.1.248 slave2
# 关闭SELinux
sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/sysconfig/selinux
setenforce 0
# 关闭iptables
service iptables stop
chkconfig iptables off
3. 时间同步与源配置
所有节点同步系统时间,并配置YUM和EPEL源。
4. SSH免密登录配置
配置master到所有节点的SSH互信。
三、安装JDK及环境变量(所有节点)
[root@master ~]# rpm -ivh jdk-8u25-linux-x64.rpm
# 创建环境变量文件
[root@master ~]# cat /etc/profile.d/java.sh
export JAVA_HOME=/usr/java/latest
export CLASSPATH=$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
[root@master ~]# . /etc/profile.d/java.sh
[root@master ~]# java -version
java version "1.8.0_25"
Java(TM) SE Runtime Environment (build 1.8.0_25-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.25-b02, mixed mode)
四、安装与配置Hadoop
1. 安装Hadoop(master节点)
[root@master ~]# tar xf hadoop-2.6.5.tar.gz -C /usr/local
[root@master local]# ln -sv hadoop-2.6.5 hadoop
# 配置环境变量
[root@master local]# cat /etc/profile.d/hadoop.sh
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
[root@master local]# . /etc/profile.d/hadoop.sh
2. 修改核心配置文件(路径:/usr/local/hadoop/etc/hadoop)
hadoop-env.sh:
export JAVA_HOME=/usr/java/latest
core-site.xml:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/data/hadoop/tmp</value>
</property>
</configuration>
hdfs-site.xml:
<configuration>
<property>
<name>dfs.namenode.http-address</name>
<value>master:50070</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>slave1:50090</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/data/hadoop/name</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/data/hadoop/data</value>
</property>
</configuration>
mapred-site.xml(先重命名模板文件):
[root@master hadoop]# mv mapred-site.xml.template mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
yarn-site.xml:
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
</configuration>
masters:
slave1
slaves:
slave1
slave2
3. 创建数据目录
[root@master local]# mkdir -pv /data/hadoop/{name,data,tmp}
4. 分发安装文件
[root@master local]# scp -r hadoop-2.6.5 slave1:/usr/local/
[root@master local]# scp -r hadoop-2.6.5 slave2:/usr/local/
[root@master local]# scp /etc/profile.d/hadoop.sh slave1:/etc/profile.d/
[root@master local]# scp /etc/profile.d/hadoop.sh slave2:/etc/profile.d/
# 在slave节点执行
[root@slave1 ~]# cd /usr/local && ln -sv hadoop-2.6.5 hadoop
[root@slave1 ~]# . /etc/profile.d/hadoop.sh
五、启动集群
1. 格式化NameNode(master节点)
[root@master local]# hdfs namenode -format
2. 启动DFS和YARN
[root@master local]# cd /usr/local/hadoop/sbin
[root@master sbin]# start-dfs.sh
[root@master sbin]# start-yarn.sh
3. 验证进程
master节点:
[root@master sbin]# jps | grep -v Jps
3746 ResourceManager
3496 NameNode
slave1节点:
[root@slave1 ~]# jps | grep -v Jps
3906 DataNode
4060 NodeManager
3996 SecondaryNameNode
slave2节点:
[root@slave2 ~]# jps | grep -v Jps
3446 NodeManager
3351 DataNode
六、测试验证
1. 查看集群状态
[root@master sbin]# hdfs dfsadmin -report
2. YARN管理界面
访问 http://master:8088 查看YARN状态。
3. HDFS管理界面
访问 http://master:50070 查看HDFS状态。
4. 提交MapReduce任务
[root@master sbin]# hdfs dfs -mkdir -p /user/hadoop/test
[root@master ~]# hdfs dfs -put install.log /user/hadoop/test
[root@master ~]# hdfs dfs -ls /user/hadoop/test
若遇到NativeCodeLoader警告,可参考相关文档解决。