六、Hadoop集群搭建
1. Hadoop版本选择
Hadoop发行版本分为开源社区版和商业版。
社区版(官方版本):Apache软件基金会维护的 版本最新 功能最全 兼容性最不和
商业版:商业公司基于社区版进行商业化分析(CDH)兼容性好 版本略低
2. 集群简介
- 主从集群:常见的一主多从
主角色:master leader
从角色:slave follower
主从各司其职,从角色受到主角色的约束。
主角色挂了,整个服务不可用,叫做单点故障。 - 主备集群:解决单点故障 常见的是一主一备
主角色:active
备角色:standby - hadoop集群=hdf集群+yarn集群
两者逻辑上分离,但物理上常在一起。
两个集群都是标准的主从集群 一主多从
HDFS集群负责海量数据的存储。
hdfs:主角色namenode 从角色datanode 主角色的辅助角色“秘书”secondarynode
yarn集群负责海量数据运算时的资源调度。
yarn:resourcemanager nodemanager
MapReduce是计算程序是代码层面的 - 部署方式
Hadoop 部署方式分三种,Standalone mode(独立模式)、Pseudo-Distributed
mode(伪分布式模式)、Cluster mode(群集模式),其中前两种都是在单机部署。 - 集群角色规划
- 有资源上冲突的尽量不要部署在一起
- 有功能上依赖的尽量部署在一起
- 避免同一台机器出现多个进程抢夺同种资源
以3节点为例进行搭建集群模式,角色分配如下:
节点 | 角色 | 角色 | 角色 |
---|---|---|---|
node01 | NameNode | DataNode | ResourceManager |
node02 | DataNode | NodeManager | SecondaryNameNode |
node03 | DataNode | NodeManager |
3. 服务器准备
4. 网络环境准备
- NAT 方式联网
5. 服务器系统设置
- 同步时间
- 设置主机名
- 配置IP、主机名映射
- 配置ssh免密登录
- 配置防火墙
6. JDK环境安装
7. CDH版本hadoop重新编译(编译需要jdk1.7)
-
为什么要编译hadoop?
官网解释 http://hadoop.apache.org/docs/r1.0.4/cn/native_libraries.html
“鉴于性能问题以及某些Java类库的缺失,对于某些组件,Hadoop提供了自己的本地实现。这些组件保存在Hadoop的一个独立的动态链接的库里。这个库在linux平台上叫 libhadoop.so。”
“因为不是所有用户都需要Hadoop本地库,所以默认情况下Hadoop不生成该库。” -
查看该库文件
find / -name libhadoop.so
注:本地库(Native Library)是由C/C++编写的动态库[.so],并通过JNI(Java Native Interface)机制为java层提供接口。
8. Hadoop安装包目录结构
解压编译后的hadoop-2.6.0-cdh5.14.0-with-centos6.9.tar.gz,目录结构如下:
目录 | 说明 |
---|---|
bin | Hadoop最基本的管理脚本和使用脚本的目录,这些脚本是sbin目录下管理脚本的基础实现,用户可以直接使用这些脚本管理和使用Hadoop。 |
etc | Hadoop配置文件所在的目录,包括core-site.xml、hdfs-site.xml、mapred-site.xml等从Hadoop1.0继承而来的配置文件和yarn-site.xml等Hadoop2.0新增的配置文件。 |
include | 对外提供的编程库头文件(具体动态库和静态库在lib目录中),这些头文件均是用C++定义的,通常用于C++程序访问HDFS或者编写MapReduce程序。 |
lib | 该目录包含了Hadoop对外提供的编程动态库和静态库,与include目录中的头文件结合使用。 |
libexec | 各个服务对用的shell配置文件所在的目录,可用于配置日志输出、启动参数(比如JVM参数)等基本信息。 |
sbin | Hadoop管理脚本所在的目录,主要包含HDFS和YARN中各类服务的启动/关闭脚本。 |
share | Hadoop各个模块编译后的jar包所在的目录。 |
9. Hadoop配置文件修改
cd /export/servers/hadoop5.14.0/etc/hadoop/
要修改的文件有五个:
- hadoop-env.sh
设置Hadoop运行时需要的环境变量JAVA_HOME。 - core-site.xml
设置Hadoop的文件系统,由URI指定。hdfs://node01:9000
配置Hadoop的临时目录。/export/data/hadoopdata - hdfs-site.xml
指定HDFS副本的数量。dfs.replication=2
配置SecondaryNamenode所在主机的ip和端口。node02::50090 - mapred-site.xml
指定mr运行时框架,这里制定在yarn上,默认是local - yarn-site.xml
指定yarn的老大(ResourceManager)的地址。node01
NodeManager上运行的附属服务,需配置mapreduce_shuffle,才可运行MapReduce程序默认值 - slaves
配置集群主机名
10. Hadoop环境变量
# 编辑环境变量的配置文件
vi /etc/profile
export JAVA_HOME=/export/servers/jdk1.8.0_191
export HADOOP_HOME=/export/servers/hadoop5.14.0
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
# 刷新配置文件
source /etc/profile