[关闭]
@changedi 2016-04-25T10:43:56.000000Z 字数 8852 阅读 5427

Hadoop的集群安装

大数据 Hadoop



原文:http://hadoop.apache.org/docs/r2.6.4/hadoop-project-dist/hadoop-common/ClusterSetup.html

安装

需要在集群每台机器上解压安装Hadoop的发行版本。典型的场景是,集群中的一台机器作为NameNode,一台机器作为ResourceManager。这些是master。其他的机器作为DataNode和NodeManager。作为slave。

以非安全模式运行Hadoop

下面的部分描述了如何配置一个Hadoop集群。

配置文件

Hadoop的配置是由两类配置文件来驱动的:

额外的,你可以通过设置站点相关的值来改变conf/hadoop-env.sh和yarn-env.sh,以达到控制bin/目录下的Hadoop脚本的目的。

站点配置

为了配置Hadoop集群,你需要配置Hadoop程序运行的环境和程序所需参数。

Hadoop相关的进程包括NameNode/DataNode 和 ResourceManager/NodeManager。

配置Hadoop程序的环境

管理员通过conf/hadoop-env.sh和conf/yarn-env.sh脚本来配置定制的站点相关的Hadoop进程环境。

最少要做到每台远程节点都配置JAVA_HOME。

在大多数情况下,你需要声明 HADOOP_PID_DIR 和 HADOOP_SECURE_DN_PID_DIR 来指明可以被准备运行hadoop进程的用户写的目录。否则会有潜在的符号链接攻击风险。

管理员可以配置独立的进程,通过如下表的配置选项:

Daemon 环境变量
NameNode HADOOP_NAMENODE_OPTS
DataNode HADOOP_DATANODE_OPTS
Secondary NameNode HADOOP_SECONDARYNAMENODE_OPTS
ResourceManager YARN_RESOURCEMANAGER_OPTS
NodeManager YARN_NODEMANAGER_OPTS
WebAppProxy YARN_PROXYSERVER_OPTS
Map Reduce Job History Server HADOOP_JOB_HISTORYSERVER_OPTS

举例来说,要配置一个NameNode支持parallelGC,需要为hadoop-env.sh添加如下语句:

export HADOOP_NAMENODE_OPTS="-XX:+UseParallelGC ${HADOOP_NAMENODE_OPTS}"

其他可以定制的有用的配置参数包括:

Daemon 环境变量
ResourceManager YARN_RESOURCEMANAGER_HEAPSIZE
NodeManager YARN_NODEMANAGER_HEAPSIZE
WebAppProxy YARN_PROXYSERVER_HEAPSIZE
Map Reduce Job History Server HADOOP_JOB_HISTORYSERVER_HEAPSIZE

在非安全模式下配置Hadoop进程

本段描述的参数均通过如下的配置文件提供:

参数 备注
fs.defaultFS NameNode的URI hdfs://host:port/
io.file.buffer.size 131072 SequenceFile读写buffer的大小。

Hadoop Rack Awareness

HDFS和YARN的组件都是rack-aware的。

NameNode和ResourceManager通过调用API来获取集群里slave的rack信息,而API是管理员配置的。

API解析DNS(IP地址)为一个rack id。

site相关的模块可以用topology.node.switch.mapping.impl来配置。默认实现方式与topology.script.file.name配置的命令脚本实现相同。如果topology.script.file.name没有被设置,默认的rack的id将作为返回值返回给调用的所有入参IP地址。

监控NodeManager健康

Hadoop提供了一种机制,管理员可以配置NodeManager定期运行管理员提供的脚本来检测一个node是否健康。

管理员可以在他的脚本里做任意的检查来检测node的健康状态。如果脚本检测到一个node处于不健康的状态,脚本会在标准输出里打印一行ERROR的记录。NodeManager会定时的运行这个脚本并检查它的输出。如果脚本输出包含ERROR,也就是说node状态异常,这时ResourceManager会把它列入黑名单。以后不会再有任务被分配到这个node上。当然NodeManager的这个脚本是持续运行的,当node恢复正常后,ResourceManager会检测到并自动将其移出黑名单。node的健康状况在ResourceManager的web界面上也是可以由管理员观察的。node恢复健康时,web界面也会同步显示。

conf/yarn-site.xml里的以下这些参数可以控制node的健康监控脚本。

参数 备注
yarn.nodemanager.health-checker.script.path node健康脚本 检查node健康状态的脚本。
yarn.nodemanager.health-checker.script.opts node健康脚本的 options 检查node健康状态的脚本的 options
yarn.nodemanager.health-checker.script.interval-ms node健康检查时间间隔 运行脚本的时间间隔。
yarn.nodemanager.health-checker.script.timeout-ms node健康脚本超时的时间间隔。 脚本执行的超时间隔

健康检查脚本当本地磁盘坏掉时候不支持报ERROR。NodeManager有定期检查本地磁盘的能力(特别要检查nodemanager-local-dirs和nodemanager-log-dirs),并且在检查到损坏的目录数超过配置项yarn.nodemanager.disk-health-checker.min-healthy-disks设定的阈值时,整个node都会被标记为非健康且信息要发送到resource manager。boot磁盘要么是raid的,要么就是可以被健康检查脚本出错识别的。

Slaves文件

典型的场景,你可以选择集群中的一台机器作为NameNode,再选一台机器作为ResourceManager。其他机器都作为DataNode和NodeManager。

在conf/slaves文件下列出所有的slave的hostname和IP,每行一个。

日志

Hadoop通过Apache Commons Logging使用Apache log4j来作为日志框架。编辑conf/log4j.properties文件来自定义log的配置。

操作Hadoop集群

一旦所有配置都好了后,将这些配置文件都分发到所有机器的HADOOP_CONF_DIR目录下。

Hadoop启动

启动一个Hadoop集群,你需要同时启动HDFS和YARN集群。

格式化一个新的分布式文件系统:

$ $HADOOP_PREFIX/bin/hdfs namenode -format <cluster_name>

在NameNode上运行下面的命令启动HDFS:

$ $HADOOP_PREFIX/sbin/hadoop-daemon.sh --config $HADOOP_CONF_DIR --script hdfs start namenode

运行脚本启动所有slave的DataNode:

$ $HADOOP_PREFIX/sbin/hadoop-daemon.sh --config $HADOOP_CONF_DIR --script hdfs start datanode

在ResourceManager上运行下面的命令启动YARN:

$ $HADOOP_YARN_HOME/sbin/yarn-daemon.sh --config $HADOOP_CONF_DIR start resourcemanager

运行脚本启动所有slave的NodeManager:

$ $HADOOP_YARN_HOME/sbin/yarn-daemon.sh --config $HADOOP_CONF_DIR start nodemanager

启动一个独立运行的WebAppProxy服务器。如果通过负载均衡运行多台服务器,那么每台机器都需要运行:

$ $HADOOP_YARN_HOME/sbin/yarn-daemon.sh start proxyserver --config $HADOOP_CONF_DIR

在指定的服务器上通过如下命令启动MapReduce JobHistory Server:

$ $HADOOP_PREFIX/sbin/mr-jobhistory-daemon.sh start historyserver --config $HADOOP_CONF_DIR

Hadoop关闭

在指定NameNode上通过如下命令停止NameNode:

$ $HADOOP_PREFIX/sbin/hadoop-daemon.sh --config $HADOOP_CONF_DIR --script hdfs stop namenode

运行一个脚本停止所有slave的DataNode:

$ $HADOOP_PREFIX/sbin/hadoop-daemon.sh --config $HADOOP_CONF_DIR --script hdfs stop datanode

在指定ResourceManager上通过如下命令停止ResourceManager:

$ $HADOOP_YARN_HOME/sbin/yarn-daemon.sh --config $HADOOP_CONF_DIR stop resourcemanager

运行一个脚本来停止所有slave上的NodeManager:

$ $HADOOP_YARN_HOME/sbin/yarn-daemon.sh --config $HADOOP_CONF_DIR stop nodemanager

停止WebAppProxy服务器。如果通过负载均衡运行多台服务器,那么每台机器都需要运行:

$ $HADOOP_YARN_HOME/sbin/yarn-daemon.sh stop proxyserver --config $HADOOP_CONF_DIR

在指定的服务器上通过如下命令停止MapReduce JobHistory Server:

$ $HADOOP_PREFIX/sbin/mr-jobhistory-daemon.sh stop historyserver --config $HADOOP_CONF_DIR

Web界面

Hadoop集群一旦启动,通过下面的web-ui界面来检查各个组件的状态:

程序 Web界面 备注
NameNode http://nn_host:port/ 默认HTTP port是50070.
ResourceManager http://rm_host:port/ 默认HTTP port是8088.
MapReduce JobHistory Server http://jhs_host:port/ 默认HTTP port是19888.
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注