Hadoop集群搭建
整理自:国家信息中心大数据创新创业(成都)基地
——2017年6月
01 集群介绍
HDFS集群:负责海量数据的存储,集群中的角色主要有NameNode / DataNode。
YARN集群:负责海量数据运算时的资源调度,集群中的角色主要有ResourceManager /NodeManager。
而mapreduce是一个应用程序开发包,编程模型。
本集群搭建案例,以4节点为例进行搭建,角色分配如下:
节点 | 角色分配 |
---|---|
hdp-node-01 | NameNode、SecondaryNameNode、ResourceManager |
hdp-node-02 | DataNode、NodeManager |
hdp-node-03 | DataNode、NodeManager |
hdp-node-04 | DataNode、NodeManager |
Namenode:主节点,维护和管理数据的元数据。(副本数有多少个,路径,名称,大小)
SecondaryNameNode:对NameNode里面的元数据进行备份。
DataNode:将数据写入集群里的磁盘,读数据给客户端,并且向NameNode汇报信息(通信)。
ResourceManager:资源管理器,分配运算资源。
NodeManager:是ResourceManager在数据节点上的代理,负责创建容器,将本机上的信息发送给ResourceManager。
建议:先了解集群与节点的基础知识,如每个节点创建在不同的虚拟机上等。
02 服务器准备
本案例使用虚拟机服务器来搭建HADOOP集群,所用软件及版本:
- Vmware 11.0
- Centos 6.6 64bit
- JDK1.8linux 64bit
03 NAT网络参数设置
采用NAT方式联网
编辑—虚拟网络编辑器—设置子网IP(网关地址:192.168.126.0)、子网掩码:255.255.255.0—选择NAT模式、点击NAT设置—网关设置为192.168.126.2
4个服务器节点IP地址规划:(不需要操作)
节点 | IP地址 |
---|---|
hdp-node-01 | 192.168.126.101 |
hdp-node-02 | 192.168.126.102 |
hdp-node-03 | 192.168.126.103 |
hdp-node-04 | 192.168.126.104 |
- 服务器网络设置(以设置hdp-node-01为例,其他节点按照上表的规划设置)
1、修改主机名
vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME= hdp-node-01
(其余节点设置为HOSTNAME= hdp-node-0X)
2、修改IP地址
vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes #是否开机启用
BOOTPROTO=static #ip地址设置为静态
IPADDR=192.168.126.101
NETMASK=255.255.255.0
GATEWAY=192.168.126.2
// 这里也可以配置DNS, 这里配置了后面就不用配置了
DNS1=61.139.2.69
DNS2=114.114.114.114
service network restart
(必须要做,不然无法更新导致出错)
3、修改IP地址和内网主机名的映射关系(只在node01上)
vi /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.126.101 hdp-node-01
192.168.126.102 hdp-node-02
192.168.126.103 hdp-node-03
192.168.126.104 hdp-node-04
4、关闭iptables,并设置其开机不启动
service iptables stop
chkconfig iptables off
5、配置DNS并验证配置是否成功
vi /etc/resolv.conf
nameserver 61.139.2.69
nameserver 114.114.114.114
ping www.baidu.com
6、安装scp软件
yum install openssh-clients
7、重启虚拟机
reboot
——————按照上述步骤,分别配置剩下三个节点——————
安装上传下载工具(rz上传sz下载)
yum install -y lrzsz
04 服务器系统设置(可选)
同步时间
date -s “2017 -6-19 09:12:30”
配置ssh免密登陆
05 JDK环境安装(node01上)
上传jdk安装包到linux任意路径(此处为/usr/local),即复制安装包至虚拟机:
/usr/local
创建jdk安装目录/usr/local/apps:
mkdir操作
解压jdk压缩安装包至/usr/local/apps:
tar -zxvf /usr/local/jdk-7u79-linux-x64.tar.gz -C /usr/local/apps/
重命名解压后的安装包:
mv /usr/local/apps/jdk1.7.0_79/ /usr/local/apps/jdk1.7
配置系统环境变量 /etc/profile:
vi /etc/profile
在文件最后添加:
export JAVA_HOME=/usr/local/apps/jdk1.7 export PATH=$PATH:$JAVA_HOME/bin
按esc进入正常模式后,输入:wq保存退出。
刷新环境变量,否则不会及时生效:
source /etc/profile
查看更新环境变量是否成功:
java -version
06 Hadoop 安装部署(node01上)
上传HADOOP安装压缩包到Linux任意目录(此处为/usr/local):
/usr/local
规划HADOOP安装目录:
/usr/local/apps/
解压安装包到apps目录下:
tar -zxvf /usr/local/hadoop-2.6.5.tar.gz -C /usr/local/apps/
修改配置文件:
hadoop的所有的配置文件都存放在 HADOOP_HOME/etc/hadoop/ 下,其中 HADOOP_HOME 指代hadoop压缩包解压后形成的主目录,在这里是/usr/local/apps/hadoop-2.6.5最简化配置如下:
1、配置java运行环境(hadoop是纯java语言开发的)
vi hadoop-env.sh
2、运行时配置,有4个文件
vi core-site.xml
(主要配置hdfs的资源访问路径,和hadoop运行时产生的临时数据)
# The java implementation to use. export JAVA_HOME=/usr/local/apps/jdk1.7
vihdfs-site.xml
(可以不用配置,有很多默认的值)
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://hdp-node-01:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/usr/local/apps/hadoop-2.6.5/hdpdata</value> </property> </configuration> <configuration> <property> <name>dfs.replication</name> <value>3</value> </property> </configuration>
重命名:mvmapred-site.xml.template mapred-site.xml
vi mapred-site.xml
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>
vi yarn-site.xml
<configuration> <property> <name>yarn.resourcemanager.hostname</name> <value>hdp-node-01</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> </configuration>
3、配置HADOOP环境变量(方便在任意目录执行hadoop命令(可选))
vi /etc/profile
在JAVA_HOME后面添加HADOOP_HOME,并在原有的PATH后面添加hadoop命令path,修改后如下:
export JAVA_HOME=/usr/local/apps/jdk1.7 export HADOOP_HOME=/usr/local/apps/hadoop-2.6.5 export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
3.1 把配置好的hadoop安装包,jdk安装包封发到其他节点:
scp -r /usr/local/apps hdp-node-02:/usr/local/
scp -r /usr/local/apps hdp-node-03:/usr/local/
scp -r /usr/local/apps hdp-node-04:/usr/local/
3.2 把/etc/profile环境变量文件,/etc/hosts主机ip映射文件分发到2,3,4节点
scp /etc/profile /etc/hosts hdp-node-02:/etc/
scp /etc/profile /etc/hosts hdp-node-03:/etc/
scp /etc/profile /etc/hosts hdp-node-04:/etc/
3.3 到各个节点刷新环境变量,验证安装包,jdk和hadoop环境变量都已经配置完成
java –version
hadoop fs -help
3.4 配置主从节点,每个节点都要配置
cd /usr/local/apps/hadoop-2.6.5/etc/hadoop
vim slaves
localhost hdp-node-02 hdp-node-03(换行)
注:root用户下配置各种环境变量:
删除旧的公钥:rm -rf .ssh/know_hosts
免密登陆:ssh-copy-id root@hdp-node-03
进入远程:ssh root@hdp-node-02
07 启动集群
分布启动HDFS集群
1、初始化[^node 01]:
hadoopnamenode -format
2、启动namenode[^node 01]:
hadoop-daemon.sh start namenode
3、启动datanode[^node 02、03、04]:
hadoop-daemon.sh start datanode
批量启动HDFS集群[^node 01]
vi /usr/local/apps/hadoop-2.6.5/etc/hadoop/slaves
1、按照规划配置,添加从节点主机名:
hdp-node-02
hdp-node-03
hdp-node-04
2、配置免密码登陆,从启动节点到其他节点:
ssh-keygen
ssh-copy-id hdp-node-01
ssh-copy-id hdp-node-02
ssh-copy-id hdp-node-03
ssh-copy-id hdp-node-04
3、批量启动yarn集群,hdp-node-01(注:namenode,resourcemanager都是主节点,也称管理节点,采用批量启动脚本启动yarn集群)
start-dfs.sh
start-yarn.sh
08 测试
——上传文件到HDFS
从本地上传一个文本文件到hdfs的/wordcount/input目录下
[HADOOP@hdp-node-01 ~]$ HADOOP fs -mkdir -p /wordcount/input
[HADOOP@hdp-node-01 ~]$ HADOOP fs -put /home/HADOOP/somewords.txt /wordcount/input