hadoop2.8.2官方文档之分布式集群
来源:互联网 发布:greenvpn网络加速器 编辑:程序博客网 时间:2024/06/06 07:23
目标
这个文档介绍怎么使用Hadoop集群,从几个节点到几千个节点。想要玩转Hadoop,你可能需要先尝试一下单节点模式:see(单节点模式)
这个文档不包括一些高级主题,比如:安全性和高可用性。
需求
- 安装java正确版本。(单节点模式中介绍了如何选择正确java版本)
- 从Apache镜像下载稳定版的Hadoop。
安装
安装一个Hadoop集群需要在不同的机器上解压软件。把不同的硬件(服务器)拆分为不同的功能是非常重要的。
通常一台集群中的一台机器指定作为NameNode,另外一台作为ResourceManager,这是主节点。其他的服务,比如Web App代理服务和MapReduce任务历史服务,通常运行在专门的机器上或者共享的机器上,这需要根据负载因素考虑。
急群中剩下的机器作为DataNode和NodeManager,这是从节点。
配置Hadoop为非安全模式
Hadoop的java配置有两个重要的类型:
- 只读的默认配置:core-default.xml, hdfs-default.xml, yarn-default.xml 和 mapred-default.xml.
- 具体地址配置:etc/hadoop/core-site.xml, etc/hadoop/hdfs-site.xml, etc/hadoop/yarn-site.xml 和 etc/hadoop/mapred-site.xml.
另外,你可以通过修改etc/hadoop/hadoop-env.sh和etc/hadoop/yarn-env.sh中的内容来代替设置具体地址配置。
为了配置Hadoop集群,你需要配置Hadoop运行的环境,也就是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 脚本来自定义具体地址配置。
至少,你必须指定JAVA_HOME的值。
管理员可以使用下面的选项单独配置每一个进程,选项如下:
举个例子,让Namenode进程使用parallelGC回收器,下面的配置就需要加入 hadoop-env.sh中。
export HADOOP_NAMENODE_OPTS="-XX:+UseParallelGC"
更多的配置可以查看etc/hadoop/hadoop-env.sh 文件。下面列几个常用到的参数。
- HADOOP_PID_DIR :进程id文件存放的目录。
- HADOOP_LOG_DIR :进程的日志文件存放的目录。
- HADOOP_HEAPSIZE / YARN_HEAPSIZE:最大堆大小,单位MB。如果这个参数设置为1000,那么堆就是1000MB。默认就是1000。
通常情况,你应该指定HADOOP_PID_DIR 和HADOOP_LOG_DIR ,并且使得这些目录只有指定用户才有权限操作。否则会有潜在符号链接攻击的危险。
配置HADOOP_PREFIX 也是很常用的,举个例子,在/etc/profile.d中添加一个简单的脚本:
HADOOP_PREFIX=/path/to/hadoopexport HADOOP_PREFIX
还有一些设置堆大小的参数如下所示:
配置Hadoop进程
这个章节介绍一些配置文件中重要的参数。
etc/hadoop/core-site.xml
etc/hadoop/hdfs-site.xml
配置NameNode:
配置DataNode:
etc/hadoop/yarn-site.xml
配置ResourceManager 和NodeManager:
配置ResourceManager:
配置NodeManager:
配置历史服务(需要移动到任务地方):
etc/hadoop/mapred-site.xml
配置MapReduce应用:
配置MapReduce JobHistory服务:
NodeManager的健康监测
Hadoop提供了一个监测节点是否健康的机制,管理员通过配置NodeManager运行一个间隔执行的脚本就可以做到做到。
管理员选择脚本中提供的功能就可以监测节点的健康状态,如果脚本监测到节点处于一个非健康状态,就会打印一个ERROR开头的日志到标准输出,NodeManager间隔执行脚本并检查它的输出。如果脚本的输出包含一个ERROR,那么就会报告这个节点处于非健康状态,然后ResourceManager就会把这个节点加入黑名单,任务不会再让这个节点处理。此后NodeManager依旧会执行这个脚本,来检测这个节点是否恢复健康,恢复健康后ResourceManager 会自动的移除黑名单。节点的健康是根据脚本的输出来检测的,我们可以通过ResourceManager 的Web接口来查看它的健康状态。
下面配置中的参数,可以控制节点的的健康检测脚本,配置文件etc/hadoop/yarn-site.xml。
如果本地应该坏了的话,这个脚本不应该打印ERROR。NodeManager有能力检测硬盘是否正常工作(具体检测nodemanager-local-dirs和nodemanager-log-dirs),如果达到了yarn.nodemanager.disk-health-checker.min-healthy-disks配置的数量,整个节点就会被标记为非健康的,这个信息也会发送给ResourceManager。
Slaves 文件
在conf/slaves文件中列出所有slave的主机名或者IP地址,一行一个。辅助脚本(如下所述)将使用Hadoop/slaves文件同时在多台主机上运行命令。它不用于任何基于java的Hadoop的配置。为了使用这一功能,必须为运行Hadoop的账号建立SSH信任(通过免密码SSH或其他手段,如Kerberos)。
Hadoop机架感知
许多Hadoop的组件是具有机架感知的,它有利于网络拓扑结构的高性能和安全。Hadoop守护进程通过调用一个管理员配置模块获取集群中Slaves的机架信息。
HDFS和Map/Reduce的组件是能够感知机架的。查看Rack Awareness获取更多特定信息。
非常推荐你在启动HDFS前配置机架感知。
日志
Hadoop使用Apache log4j来记录日志,它由Apache Commons Logging框架来实现。编辑conf/log4j.properties文件可以改变Hadoop守护进程的日志配置(日志格式等)。
操作Hadoop集群
一旦所有必须的配置都完成,复制这些配置到所有机器上的HADOOP_CONF_DIR中。在所有机器上这些目录都应该是相同的。
通常,建议HDFS和YARN使用不同的用户来启动,在多数的安装中,HDFS进程使用”hdfs”,YARN通常使用‘yarn账号’。
Hadoop启动
为了启动Hadoop集群,你应该先启动HDFS和YARN集群。
首先启动HDFS,必须格式化,格式化一个新的分布式文件系统如下:
[hdfs]$ $HADOOP_PREFIX/bin/hdfs namenode -format <cluster_name>
启动HDFS的NameNode,使用下面的命令在每一个hdfs节点上执行:
[hdfs]$ $HADOOP_PREFIX/sbin/hadoop-daemon.sh --config $HADOOP_CONF_DIR --script hdfs start namenode
启动HDFS的DataNode,使用下面的命令在每一个hdfs节点上执行:
[hdfs]$ $HADOOP_PREFIX/sbin/hadoop-daemons.sh --config $HADOOP_CONF_DIR --script hdfs start datanode
如果etc/hadoop/slaves和ssh访问已经配置好了(查看单节点安装),所有的HDFS进程可以使用一个脚本启动,使用hdfs用户:
[hdfs]$ $HADOOP_PREFIX/sbin/start-dfs.sh
在指定的ResourceManager上启动YARN,使用下面的命令:
[yarn]$ $HADOOP_YARN_HOME/sbin/yarn-daemon.sh --config $HADOOP_CONF_DIR start resourcemanager
在每一个yarn节点上执行下面的脚本启动NodeManager :
[yarn]$ $HADOOP_YARN_HOME/sbin/yarn-daemons.sh --config $HADOOP_CONF_DIR start nodemanager
启动一个单独的WebAppProxy 服务,使用yarn方式启动WebAppProxy 服务,如果为了负载均衡启动多个服务,那么需要在每一个上都要执行:
[yarn]$ $HADOOP_YARN_HOME/sbin/yarn-daemon.sh --config $HADOOP_CONF_DIR start proxyserver
如果etc/hadoop/slaves和ssh访问已经配置好了(查看单节点安装),所有的YARN进程可以使用一个脚本启动,使用yarn用户:
[yarn]$ $HADOOP_PREFIX/sbin/start-yarn.sh
在指定的服务器上启动MapReduce JobHistory服务,使用mapred用户:
[mapred]$ $HADOOP_PREFIX/sbin/mr-jobhistory-daemon.sh --config $HADOOP_CONF_DIR start historyserver
关闭Hadoop
在NameNode节点上停止NameNode使用下面的命令。用hdfs用户:
[hdfs]$ $HADOOP_PREFIX/sbin/hadoop-daemon.sh --config $HADOOP_CONF_DIR --script hdfs stop namenode
执行脚本停止DataNode。
[hdfs]$ $HADOOP_PREFIX/sbin/hadoop-daemons.sh --config $HADOOP_CONF_DIR --script hdfs stop datanode
如果etc/hadoop/slaves和ssh访问已经配置好了(查看单节点安装),所有的HDFS进程可以使用一个脚本停止,使用hdfs用户:
[hdfs]$ $HADOOP_PREFIX/sbin/stop-dfs.sh
在ResourceManager 节点上停止ResourceManager 使用下面的命令,使用yarn用户:
[yarn]$ $HADOOP_YARN_HOME/sbin/yarn-daemon.sh --config $HADOOP_CONF_DIR stop resourcemanager
在slave上执行一个脚本停止NodeManager ,yarn用户:
[yarn]$ $HADOOP_YARN_HOME/sbin/yarn-daemons.sh --config $HADOOP_CONF_DIR stop nodemanager
如果etc/hadoop/slaves和ssh访问已经配置好了(查看单节点安装),所有的YARN进程可以使用一个脚本停止,使用yarn用户:
[yarn]$ $HADOOP_PREFIX/sbin/stop-yarn.sh
指定服务器上,停止MapReduce JobHistory服务,使用下面命令,mapred用户:
[mapred]$ $HADOOP_PREFIX/sbin/mr-jobhistory-daemon.sh --config $HADOOP_CONF_DIR stop historyserver
Web接口
一旦Hadoop集群启动了,你可以使用下面的web-ui查看各种组件,
- hadoop2.8.2官方文档之分布式集群
- hadoop2.8.2官方文档之单节点集群
- hadoop2.8.2分布式集群实战
- Hadoop之——Hadoop2.2.0分布式集群安装
- hadoop学习之hadoop2.8.0完全分布式集群安装
- hadoop学习之hadoop2.8.0完全分布式集群安装
- Hadoop2.6.0官方MapReduce文档翻译 之 一
- Hadoop2.6.0官方MapReduce文档翻译 之 二
- hadoop2.7.3分布式集群搭建
- hadoop2官方文档中文翻译---索引
- hadoop2官方文档中文翻译(3)---集群配置【还未翻译完】
- 【分布式集群】hadoop2.6.0集群搭建
- hadoop2.2.0完全分布式集群搭建
- hadoop2.5.1集群部署(完全分布式)
- Hadoop2.6.0分布式集群环境配置
- Linux集群Hadoop2.5.1完全分布式安装
- hadoop2.7集群完全分布式安装配置
- Hadoop2.5.2完全分布式集群部署步骤
- Android属性动画完全解析(下),Interpolator和ViewPropertyAnimator的用法
- 如何使用 Hexo && 部署至GitHub Pages [tags] [翻译]
- leetcode 24. Swap Nodes in Pairs
- HDU 1559 最大子矩阵
- chrome浏览器 配置开机启动全屏
- hadoop2.8.2官方文档之分布式集群
- Redis 有序集合(sorted set)
- Java学习笔记(7)
- 15.4.1 处理流的用法
- 排序算法@c++描述-插入排序
- EPUB是什么格式?PDF如何转换成EPUB格式?
- 算法爱好者——132模式 ? 待解决
- 页面布局 --- 三列自适应布局
- oracle查看数据库当前连接数