问题导读
1.本文是如何定义master的?
2.如何配置hadoop守护进程环境?
3.配置Hadoop守护进程需要哪些配置文件?
4.yarn-site配置文件,主要配置哪两个进程?
5.mapred-site.xml配置文件,配置哪些内容?
6.hadoop如何配置监测NodeManagers的健康状况?
7.hadoop3.0slaves做了什么更改?
8.如何单独启动DataNode?
9.访问hadoop web界面都有哪些接口?
目的
本文档介绍如何安装和配置Hadoop集群,从少数节点到数千个节点的超大型集群。 要使用Hadoop,您可以首先将其安装在一台机器上(请参阅单节点安装http://hadoop.apache.org/docs/r3.0.0/hadoop-project-dist/hadoop-common/SingleCluster.html)。本文档不包括安全性或高可用性等高级主题。
准备
安装Java
下载hadoop安装包
安装
安装Hadoop集群通常涉及在群集中的所有计算机上解压缩软件,或者通过适合您操作系统的安装包。
通常,集群中的一台机器被指定为NameNode,另一台机器被指定为ResourceManager。 这些是master。 其他服务(如Web应用程序代理服务器和MapReduce作业历史记录服务器)通常在专用硬件或共享基础结构上运行,具体取决于负载。
集群中其余的机器既充当DataNode又充当NodeManager。 这些是worker。
配置非安全模式的hadoop
Hadoop的Java配置由两种重要的配置文件驱动:
只读的默认配置 - core-default.xml,hdfs-default.xml,yarn-default.xml和mapred-default.xml。
Site-specific 的配置 - etc/hadoop/core-site.xml,etc/hadoop/hdfs-site.xml,etc/hadoop/yarn-site.xml和etc/hadoop和/mapred-site.xml。
此外,你可以控制分布式目录的bin里面的脚本,设置site-specific 值通过 etc/hadoop/hadoop-env.sh 和etc/hadoop/yarn-env.sh.
要配置Hadoop集群,您需要配置Hadoop守护程序执行的environment 以及Hadoop守护程序的配置参数。
HDFS守护进程是NameNode,SecondaryNameNode和DataNode。 YARN守护进程是ResourceManager,NodeManager和WebAppProxy。 如果要使用MapReduce,则MapReduce作业历史记录服务器也将运行。 对于大型安装,这些安装通常在不同的主机上运行。
配置Hadoop守护程序的环境
管理员应该使用etc/hadoop/hadoop-env.sh 和可选的 etc/hadoop/mapred-env.sh 和etc/hadoop/yarn-env.sh 来定制hadoop守护进程的环境。至少需要指定JAVA_HOME。
管理员可以使用下表中显示的配置选项来配置各个守护进程:
例如,要将Namenode配置为使用parallelGC和一个4GB的Java Heap,应该在hadoop-env.sh中添加以下语句:
[Bash shell] 纯文本查看 复制代码
?
1
|
export
HDFS_NAMENODE_OPTS=
"-XX:+UseParallelGC -Xmx4g"
|
其他示例请参阅etc/hadoop/hadoop-env.sh。
可以定制的其他有用的配置参数包括:
HADOOP_PID_DIR - 守护进程进程标识文件存储的目录。
HADOOP_LOG_DIR - 守护进程日志文件存储的目录。 如果日志文件不存在,将自动创建日志文件。
HADOOP_HEAPSIZE_MAX - 用于Java 的HEAPSIZE最大内存量。 JVM支持的单元也支持这里。 如果没有单位存在,它将被认为是以兆字节为单位的数字。 默认情况下,Hadoop会让JVM决定使用多少。 使用上面列出的相应_OPTS变量,可以在每个守护进程基础上覆盖此值。 例如,设置HADOOP_HEAPSIZE_MAX = 1g和HADOOP_NAMENODE_OPTS =“ - Xmx5g”将以5GB heap配置NameNode。
在大多数情况下,你应该指定hadoop_pid_dir和hadoop_log_dir目录,他们只能通过正在运行Hadoop守护进程的用户写。否则可能会有符号链接攻击。
在系统范围的shell环境配置中配置HADOOP_HOME也是很传统的。 例如,/etc/profile.d中的一个简单的脚本:
[Bash shell] 纯文本查看 复制代码
?
1
2
|
HADOOP_HOME=
/path/to/hadoop
export
HADOOP_HOME
|
配置Hadoop守护进程
本节介绍在给定的配置文件中要指定的重要参数:
etc/hadoop/core-site.xml
etc/hadoop/hdfs-site.xml
配置NameNode
配置datanode
dfs.datanode.data.dir主要用来扩容,当旧目录已经满,添加新的磁盘的时候,可以使用此属性。更多参考
如何扩容DataNode及遇到问题总结
etc/hadoop/yarn-site.xml
配置ResourceManager和NodeManager:
yarn.admin.acl:以逗号分隔的用户列表+空格+以逗号分隔的用户组列表",例如 "user1,user2 group1,group2"。如果只有组信息,需要在最前端加入一个空格,例如" group1,group2"。【参考鈞少的博客】
配置ResourceManager:
配置NodeManager:
配置History Server (需要移到其它地方):
etc/hadoop/mapred-site.xml
配置MapReduce应用程序:
配置MapReduce JobHistory Server:
监测NodeManagers的健康状况
Hadoop提供了一种机制,管理员可以通过该机制将NodeManager配置为定期运行管理员提供的脚本,以确定节点是否健康。
管理员可以通过在脚本中执行任何选择检查来确定节点是否处于健康状态。如果脚本检测到节点处于不健康状态,则必须以字符串ERROR打印一行到标准输出。 NodeManager定期生成脚本并检查其输出。如果脚本的输出包含ERROR字符串(如上所述),那么节点的状态将报告为不健康,并且该节点将被ResourceManager列入黑名单。没有进一步的任务将被分配给这个节点。但是,NodeManager继续运行该脚本,以便节点再次变得健康时,它将自动从ResourceManager中的黑名单节点中删除。节点的运行状况和脚本的输出(如果运行状况不佳)可供管理员在ResourceManager Web界面中使用。节点健康以来的时间也显示在Web界面上。
以下参数可用于控制etc/hadoop/yarn-site.xml中的节点运行状况监视脚本。
如果本地磁盘损坏,健康脚本监测不支持给出Error。NodeManager能定期监测本地磁盘的健康状态(特别是检查nodemanager-local-dirs和nodemanager-log-dirs),并且在根据配置属性yarn.nodemanager.disk-health-checker.min-healthy-disks设置的值达到坏目录数量的阈值,整个节点被标记为不健康,并且这个信息也被发送到资源管理器。引导磁盘被攻击,或者引导磁盘中的故障由运行状况检查程序脚本识别。
Slaves文件
在etc/hadoop/workers文件中,列出所有的worker的hostname或则IP地址。一行一个。辅助脚本将会使用etc/hadoop/workers文件在多台机器上一起运行命令。它不用任何基于Java的hadoop配置。必须为用于运行Hadoop的帐户建立ssh信任(通过无密码ssh或其他方式,如Kerberos)。【注释:这里前面版本不同的是修改文件名称,由slaves文件改为workers文件】
hadoop机架感知
许多Hadoop组件都具有机架感知功能,并利用网络拓扑来提高性能和安全性。 Hadoop守护进程通过调用管理员配置的模块获取集群中worker的机架信息。 有关更多具体信息,请参阅RackAware(http://hadoop.apache.org/docs/r3.0.0/hadoop-project-dist/hadoop-common/RackAwareness.html)文档。
日志
Hadoop通过Apache Commons Logging框架使用Apache log4j进行日志记录。 编辑etc/hadoop/log4j.properties文件以定制Hadoop守护进程的日志配置(日志格式等)。
集群操作
完成所有必要的配置后,将文件分发到所有机器上的HADOOP_CONF_DIR目录。 一般来说,建议HDFS和YARN作为单独的用户运行。 在大多数安装中,HDFS进程以“hdfs”执行。 YARN通常使用“yarn”帐户。
Hadoop启动
启动hadoop集群需要启动hdfs和yarn。
第一次启动hdfs,需要格式化.格式化命令:
[Bash shell] 纯文本查看 复制代码
?
1
|
[hdfs]$ $HADOOP_HOME
/bin/hdfs
namenode -
format
|
在指定节点上使用以下命令启动HDFS NameNode:
[Bash shell] 纯文本查看 复制代码
?
1
|
[hdfs]$ $HADOOP_HOME
/bin/hdfs
--daemon start namenode
|
在每个指定的节点上使用以下命令启动HDFS数据节点:
[Bash shell] 纯文本查看 复制代码
?
1
|
[hdfs]$ $HADOOP_HOME
/bin/hdfs
--daemon start datanode
|
如果配置了etc/hadoop/workers和ssh信任访问,则可以使用下面命令启动所有HDFS进程。
[Bash shell] 纯文本查看 复制代码
?
1
|
[hdfs]$ $HADOOP_HOME
/sbin/start-dfs
.sh
|
用下面的命令启动YARN,在指定的ResourceManager上运行。
[Bash shell] 纯文本查看 复制代码
?
1
|
[yarn]$ $HADOOP_HOME
/bin/yarn
--daemon start resourcemanager
|
运行一个脚本,在每个指定的主机上启动一个NodeManager:
[Bash shell] 纯文本查看 复制代码
?
1
|
[yarn]$ $HADOOP_HOME
/bin/yarn
--daemon start nodemanager
|
启动一个独立的webappproxy服务器。运行webappproxy服务器为Yarn用户。如果使用多个服务器进行负载平衡,则应该在每个服务器上运行它们:
[Bash shell] 纯文本查看 复制代码
?
1
|
[yarn]$ $HADOOP_HOME
/bin/yarn
--daemon start proxyserver
|
如果配置了etc/hadoop/workers和ssh信任访问(请参阅单节点设置),则可以使用程序脚本启动所有YARN进程。
[Bash shell] 纯文本查看 复制代码
?
1
|
[yarn]$ $HADOOP_HOME
/sbin/start-yarn
.sh
|
用以下命令启动MapReduce JobHistory服务器,在指定的服务器上运行:
[Bash shell] 纯文本查看 复制代码
?
1
|
[mapred]$ $HADOOP_HOME
/bin/mapred
--daemon start historyserver
|
集群关闭
使用下面命令停止namenode,在指定的NameNode 上运行
[Bash shell] 纯文本查看 复制代码
?
1
|
[hdfs]$ $HADOOP_HOME
/bin/hdfs
--daemon stop namenode
|
使用下面命令停止DataNode
[Bash shell] 纯文本查看 复制代码
?
1
|
[hdfs]$ $HADOOP_HOME
/bin/hdfs
--daemon stop datanode
|
如果配置了etc/hadoop/workers和ssh信任访问,则可以使用下面命令停止所有HDFS进程。
[Bash shell] 纯文本查看 复制代码
?
1
|
[hdfs]$ $HADOOP_HOME
/sbin/stop-dfs
.sh
|
使用下面命令停止ResourceManager ,在指定的ResourceManager上运行
[Bash shell] 纯文本查看 复制代码
?
1
|
[yarn]$ $HADOOP_HOME
/bin/yarn
--daemon stop resourcemanager
|
运行脚本停止worker上的NodeManager
[Bash shell] 纯文本查看 复制代码
?
1
|
[yarn]$ $HADOOP_HOME
/bin/yarn
--daemon stop nodemanager
|
如果配置了etc/hadoop/workers和ssh信任访问,则可以使用下面命令停止所有YARN 进程。
[Bash shell] 纯文本查看 复制代码
?
1
|
[yarn]$ $HADOOP_HOME
/sbin/stop-yarn
.sh
|
停止webappproxy服务器。运行webappproxy服务器为Yarn用户。如果使用多个服务器进行负载平衡,则应该在每个服务器上运行它们:
[Bash shell] 纯文本查看 复制代码
?
1
|
[yarn]$ $HADOOP_HOME
/bin/yarn
stop proxyserver
|
停止MapReduce JobHistory Server使用下面命令,在指定的机器上运行
[Bash shell] 纯文本查看 复制代码
?
1
|
[mapred]$ $HADOOP_HOME
/bin/mapred
--daemon stop historyserver
|
Web界面
一旦Hadoop集群启动并运行,可以通过web-ui查看,如下所述: