2015-07-02 2 条评论

系统环境:

  • 操作系统:Redhat6.6
  • Hadoop版本:CDH5.2.0
  • JDK版本:1.7
  • 运行用户:root

集群各节点角色规划为:

cdh1作为master节点,其他节点作为slave节点。

1. 准备工作

安装 Hadoop 集群前先做好下面的准备工作,在修改配置文件的时候,建议在一个节点上修改,然后同步到其他节点,例如:对于 hdfs 和 yarn ,在 NameNode 节点上修改然后再同步,对于 HBase,选择一个节点再同步。因为要同步配置文件和在多个节点启动服务,建议配置 ssh 无密码登陆。

1.1 配置hosts

CDH 要求使用 IPv4,IPv6 不支持,禁用IPv6方法:

使其生效:

最后确认是否已禁用:

1、设置hostname,以cdh1为例:

2、确保/etc/hosts中包含ip和FQDN,如果你在使用DNS,保存这些信息到/etc/hosts不是必要的,却是最佳实践。

3、确保/etc/sysconfig/network中包含hostname=cdh1

4、检查网络,运行下面命令检查是否配置了hostname以及其对应的ip是否正确。

运行uname -a查看hostname是否匹配hostname命令运行的结果:

先安装bind-utils,才能运行host命令:

运行下面命令查看hostname和ip是否匹配:

5、hadoop的所有配置文件中配置节点名称时,请使用hostname和不是ip

1.2 关闭防火墙

/etc/init.d/iptables stop 关闭防火墙。
chkconfig iptables off

1.3 时钟同步

搭建时钟同步服务器

这里选择 cdh1 节点为时钟同步服务器,其他节点为客户端同步时间到该节点。安装ntp:

修改 cdh1 上的配置文件 /etc/ntp.conf :

启动 ntp:

ntpq用来监视ntpd操作,使用标准的NTP模式6控制消息模式,并与NTP服务器通信。

ntpq -p 查询网络中的NTP服务器,同时显示客户端和每个服务器的关系。

  • “* “:响应的NTP服务器和最精确的服务器。
  • “+”:响应这个查询请求的NTP服务器。
  • “blank(空格)”:没有响应的NTP服务器。
  • “remote” :响应这个请求的NTP服务器的名称。
  • “refid “:NTP服务器使用的更高一级服务器的名称。
  • “st”:正在响应请求的NTP服务器的级别。
  • “when”:上一次成功请求之后到现在的秒数。
  • “poll”:当前的请求的时钟间隔的秒数。
  • “offset”:主机通过NTP时钟同步与所同步时间源的时间偏移量,单位为毫秒(ms)。

客户端的配置

在cdh2和cdh3节点上执行下面操作:

Ntpd启动的时候通常需要一段时间大概5分钟进行时间同步,所以在ntpd刚刚启动的时候还不能正常提供时钟服务,报错”no server suitable for synchronization found”。启动时候需要等待5分钟。

如果想定时进行时间校准,可以使用crond服务来定时执行。

每天 1:00 Linux 系统就会自动的进行网络时间校准

1.4 安装jdk

CDH5.2要求使用JDK1.7,JDK的安装不在赘述。

1.5 设置本地yum源

由于国内网络原因,我们不熟用CDH官方的yum源地址,而是直接使用官方提供的cdh5的仓库压缩包,然后配置本地源即可。
把上述下载下来的包解压后作为cdh源
vi /etc/yum.repo.d/cdh.repo
操作系统的yum源,建议你通过下载 redhat/centos 的 dvd 然后配置一个本地的 yum 源。

2. 安装和配置HDFS

根据节点规划,cdh1 为NameNode节点,cdh2为SecondaryNameNode节点,cdh2 和 cdh3 为DataNode节点

在 cdh1 节点安装 hadoop-hdfs-namenode:

在 cdh2 节点安装 hadoop-hdfs-secondarynamenode

在 cdh2、cdh3节点安装 hadoop-hdfs-datanode

2.1 修改hadoop配置文件

/etc/hadoop/conf/core-site.xml中设置fs.defaultFS属性值,该属性指定NameNode是哪一个节点以及使用的文件系统是file还是hdfs,格式:hdfs://<namenode host>:<namenode port>/,默认的文件系统是file:///

 

/etc/hadoop/conf/hdfs-site.xml中设置dfs.permissions.superusergroup属性,该属性指定hdfs的超级用户,默认为hdfs,你可以修改为hadoop:

更多的配置信息说明,请参考 Apache Cluster Setup

2.2 指定本地文件目录

在hadoop中默认的文件路径以及权限要求如下:

说明你可以在 hdfs-site.xm l中只配置hadoop.tmp.dir,也可以分别配置上面的路径。这里使用分别配置的方式,hdfs-site.xml中配置如下:

NameNode和DataNode上手动创建 dfs.name.dir 或 dfs.namenode.name.dir 的本地目录:

修改上面目录所有者:

hadoop的进程会自动设置 dfs.data.dir 或 dfs.datanode.data.dir,但是 dfs.name.dir 或 dfs.namenode.name.dir 的权限默认为755,需要手动设置为700:

注意:DataNode的本地目录可以设置多个,你可以设置 dfs.datanode.failed.volumes.tolerated 参数的值,表示能够容忍不超过该个数的目录失败。

2.3 配置 SecondaryNameNode

配置 SecondaryNameNode 需要在 /etc/hadoop/conf/hdfs-site.xml 中添加以下参数:

在 /etc/hadoop/conf/hdfs-site.xml 中加入如下配置,将cdh2设置为 SecondaryNameNode:

设置多个secondarynamenode,请参考multi-host-secondarynamenode-configuration.

2.4 开启回收站功能

回收站功能默认是关闭的,建议打开。在 /etc/hadoop/conf/core-site.xml 中添加如下两个参数:

  • fs.trash.interval,该参数值为时间间隔,单位为分钟,默认为0,表示回收站功能关闭。该值表示回收站中文件保存多长时间,如果服务端配置了该参数,则忽略客户端的配置;如果服务端关闭了该参数,则检查客户端是否有配置该参数;
  • fs.trash.checkpoint.interval,该参数值为时间间隔,单位为分钟,默认为0。该值表示检查回收站时间间隔,该值要小于fs.trash.interval,该值在服务端配置。如果该值设置为0,则使用 fs.trash.interval 的值。

2.6 开启WebHDFS

在NameNode节点上安装:

然后修改 /etc/hadoop/conf/core-site.xml配置代理用户:

2.7 配置LZO

下载repo文件到 /etc/yum.repos.d/:

然后,安装lzo:

最后,在 /etc/hadoop/conf/core-site.xml 中添加如下配置:

更多关于LZO信息,请参考:Using LZO Compression

2.8 (可选)配置Snappy

cdh 的 rpm 源中默认已经包含了 snappy ,直接在每个节点安装Snappy:

然后,在 core-site.xml 中修改io.compression.codecs的值,添加 org.apache.hadoop.io.compress.SnappyCodec 。

使 snappy 对 hadoop 可用:

2.9 启动HDFS

将cdh1上的配置文件同步到每一个节点:

在cdh1节点格式化NameNode:

在每个节点运行下面命令启动hdfs:

在 hdfs 运行之后,创建 /tmp 临时目录,并设置权限为 1777

如果安装了HttpFS,则启动 HttpFS 服务:

2.10 测试

通过 http://cdh1:50070/ 可以访问 NameNode 页面。使用 curl 运行下面命令,可以测试 webhdfs 并查看执行结果:

返回 {“Path”:”\/user\/hdfs”}

更多的 API,请参考 WebHDFS REST API

3. 安装和配置YARN

根据文章开头的节点规划,cdh1 为resourcemanager节点,cdh2 和 cdh3 为nodemanager节点,为了简单,historyserver 也装在 cdh1 节点上。

3.1 安装服务

在 cdh1 节点安装:

在 cdh2、cdh3 节点安装:

3.2 修改配置参数

要想使用YARN,需要在 /etc/hadoop/conf/mapred-site.xml 中做如下配置:

修改/etc/hadoop/conf/yarn-site.xml,配置resourcemanager的节点名称以及一些服务的端口号:

 

在 /etc/hadoop/conf/yarn-site.xml 中添加如下配置:

 

注意:
  • yarn.nodemanager.aux-services 的值在 cdh4 中应该为 mapreduce.shuffle,并配置参数yarn.nodemanager.aux-services.mapreduce.shuffle.class值为org.apache.hadoop.mapred.ShuffleHandler ,在cdh5中为mapreduce_shuffle,这时候请配置yarn.nodemanager.aux-services.mapreduce_shuffle.class参数
  • 这里配置了 yarn.application.classpath ,需要设置一些喜欢环境变量:

在hadoop中默认的文件路径以及权限要求如下:

故在 /etc/hadoop/conf/yarn-site.xml 文件中添加如下配置:

创建 yarn.nodemanager.local-dirs 和 yarn.nodemanager.log-dirs 参数对应的目录:

在 hdfs 上创建 yarn.nodemanager.remote-app-log-dir 对应的目录:

在 /etc/hadoop/conf/mapred-site.xml 中配置 MapReduce History Server:

此外,确保 mapred、yarn 用户能够使用代理,在 /etc/hadoop/conf/core-site.xml 中添加如下参数:
配置 Staging 目录:
并在 hdfs 上创建相应的目录:

可选的,你可以在 /etc/hadoop/conf/mapred-site.xml 设置以下两个参数:

  • mapreduce.jobhistory.intermediate-done-dir,该目录权限应该为1777,默认值为 ${yarn.app.mapreduce.am.staging-dir}/history/done_intermediate
  • mapreduce.jobhistory.done-dir,该目录权限应该为750,默认值为 ${yarn.app.mapreduce.am.staging-dir}/history/done

然后,在 hdfs 上创建目录并设置权限:

设置 HADOOP_MAPRED_HOME,或者把其加入到 hadoop 的配置文件中

3.4 验证 HDFS 结构:

你应该看到如下结构:

3.5 同步配置文件

同步配置文件到整个集群:

3.6 启动服务

在每个节点启动 YARN :

在 cdh1 节点启动 mapred-historyserver :

为每个 MapReduce 用户创建主目录,比如说 hive 用户或者当前用户:

3.7 测试

通过 http://cdh1:8088/ 可以访问 Yarn 的管理页面,通过 http://cdh1:19888/ 可以访问 JobHistory 的管理页面,查看在线的节点:http://cdh1:8088/cluster/nodes

运行下面的测试程序,看是否报错:

4. 安装 Zookeeper

Zookeeper 至少需要3个节点,并且节点数要求是基数,这里在所有节点上都安装 Zookeeper。

4.1 安装

在每个节点上安装zookeeper:

4.2 修改配置文件

设置 zookeeper 配置 /etc/zookeeper/conf/zoo.cfg

4.3 同步配置文件

将配置文件同步到其他节点:

4.4 初始化并启动服务

在每个节点上初始化并启动 zookeeper,注意 n 的值需要和 zoo.cfg 中的编号一致。

在 cdh1 节点运行:

在 cdh2 节点运行:

在 cdh3 节点运行:

4.5 测试

通过下面命令测试是否启动成功:

5. 安装 HBase

HBase 依赖 ntp 服务,故需要提前安装好 ntp。

5.1 安装前设置

1)修改系统 ulimit 参数,在 /etc/security/limits.conf 中添加下面两行并使其生效:

2)修改 dfs.datanode.max.xcievers,在 hdfs-site.xml 中修改该参数值,将该值调整到较大的值:

5.2 安装

在每个节点上安装 master 和 regionserver

注:前期可以只在master上装hbase-master,在region上安装hbase-regionserver

5.3 修改配置文件

修改 hbase-site.xml文件,关键几个参数及含义如下:

  • hbase.distributed:是否为分布式模式
  • hbase.rootdir:HBase在hdfs上的目录路径
  • hbase.tmp.dir:本地临时目录
  • hbase.zookeeper.quorum:zookeeper集群地址,逗号分隔
  • hbase.hregion.max.filesize:hregion文件最大大小
  • hbase.hregion.memstore.flush.size:memstore文件最大大小

另外,在CDH5中建议关掉Checksums(见Upgrading HBase)以提高性能,最后的配置如下:

 

在 hdfs 中创建 /hbase 目录

设置 crontab 定时删除日志:

5.4 同步配置文件

将配置文件同步到其他节点:

5.5 创建本地目录

在 hbase-site.xml 配置文件中配置了 hbase.tmp.dir 值为 /data/hbase,现在需要在每个 hbase 节点创建该目录并设置权限:

5.6 启动HBase

5.7 测试

通过 http://cdh1:60030/ 可以访问 RegionServer 页面,然后通过该页面可以知道哪个节点为 Master,然后再通过 60010 端口访问 Master 管理界面。

发表评论

  1. 萌学园之寻找盘古

  2. 萌学园之寻找盘古