Hadoop全分布式集群

翻译: http://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/ClusterSetup.html
版本:2.9.0

目的

本文档介绍如何安装和配置Hadoop集群,范围从几个节点到具有数千个节点的超大型集群。要使用Hadoop,您可能首先需要将其安装在单台机器上(请参阅单节点安装)。

本文档不包括安全或高可用性等高级主题。

先决条件

  • 安装Java。查看Hadoop Wiki以获取已知的良好版本。
  • 从Apache镜像下载稳定版本的Hadoop。

安装

安装Hadoop集群通常涉及在群集中的所有机器上解压软件,或者通过适合您的操作系统的打包系统进行安装。把硬件进行功能划分是很重要的。

通常,群集中的一台机器被指定为NameNode,另一台机器指定为ResourceManager。这些是masters。其他服务(例如Web App Proxy Server和MapReduce Job History服务器)通常在专用硬件或共享基础架构上运行,具体取决于负载。

集群中的其余机器充当DataNode和NodeManager。这些是slaves。

以非安全模式配置Hadoop

Hadoop的Java配置有两种重要的配置文件:

  • 只读的默认配置 - core-default.xml, hdfs-default.xml, yarn-default.xml and mapred-default.xml.

  • 自定义的配置 - etc/hadoop/core-site.xml, etc/hadoop/hdfs-site.xml, etc/hadoop/yarn-site.xml and etc/hadoop/mapred-site.xml.

此外,您可以通过 etc/hadoop/hadoop-env.sh and etc/hadoop/yarn-env.sh.设置自定义路径,来控制bin/目录下的hadoop脚本。

要配置Hadoop集群,您需要配置Hadoop守护程序执行的environment 以及Hadoop守护程序的 configuration parameters。

HDFS守护进程包括NameNode,SecondaryNameNode和DataNode。YARN守护进程是ResourceManager,NodeManager和WebAppProxy。如果要使用MapReduce,则MapReduce作业历史记录服务器Job History Server也需要运行。对于大型安装,这些守护进程通常在不同的主机上运行。

配置Hadoop守护程序的环境

管理员应该使用 etc/hadoop/hadoop-env.sh 以及可选的etc/hadoop/mapred-env.sh and etc/hadoop/yarn-env.sh 脚本来定制Hadoop守护进程的进程环境。

至少,您必须指定JAVA_HOME 以便在每个远程节点上正确定义它。

管理员可以使用下表中显示的配置选项配置各个守护程序:

图片.png

例如,要将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为单位,例如,如果varibale设置为1000,堆将设置为1000MB。这用于配置守护进程的堆大小。默认情况下,该值为1000。

在大多数情况下,您应该指定 HADOOP_PID_DIR 和 HADOOP_LOG_DIR 目录,以便它们只能由要运行hadoop守护程序的用户写入。否则就有可能发生符号链接攻击。

在系统范围的shell环境配置中配置 HADOOP_PREFIX 。例如,/etc/profile.d:一个简单脚本:

  HADOOP_PREFIX=/path/to/hadoop
  export HADOOP_PREFIX
图片.png

配置Hadoop守护程序

本节介绍在给定的配置文件中要指定的重要参数:

  • etc/hadoop/core-site.xml


    图片.png
  • etc/hadoop/hdfs-site.xml

  • NameNode的配置:


    图片.png
  • DataNode的配置:

参数 笔记
dfs.datanode.data.dir 逗号分隔的, DataNode 用于在本地文件系统上存储blocks的列表。 如果这是以逗号分隔的目录列表,则数据将存储在所有已命名的目录中,通常位于不同的设备上。
  • etc/hadoop/yarn-site.xml

  • ResourceManager和NodeManager的配置:


    图片.png
  • ResourceManager的配置:


    图片.png
  • NodeManager的配置:


    图片.png
  • 历史记录服务器的配置(需要移到别处):


    图片.png
  • etc/hadoop/mapred-site.xml

  • MapReduce应用程序的配置:


    图片.png
  • MapReduce JobHistory服务器的配置:


    图片.png

监视NodeManagers的运行状况

Hadoop提供了一种机制,管理员可以通过该机制将NodeManager配置为定期运行管理员提供的脚本,以确定节点是否健康。

管理员可以通过在脚本中执行任何选择检查来确定节点是否处于健康状态。如果脚本检测到节点处于不健康状态,则它必须以字符串ERROR打印一行到标准输出。NodeManager定期生成脚本并检查其输出。如果脚本的输出包含字符串ERROR,如上所述,则该节点的状态会报告为 unhealthy 并且ResourceManager将该节点列入黑名单。没有更多的任务将被分配给这个节点。但是,NodeManager继续运行该脚本,以便如果该节点再次变得健康,它将自动从ResourceManager中的黑名单节点中删除。如果ResourceManager Web界面中的管理员可以使用该节点的健康状况以及脚本的输出(如果状态不健康),那么该节点的健康状况将与脚本的输出一起提供。节点健康时长也显示在Web界面上。

以下参数可用于控制 etc/hadoop/yarn-site.xml. 的节点运行状况监控脚本。


图片.png

如果有一些本地磁盘变坏,则健康检查器脚本不支持发出ERROR。NodeManager能够定期检查本地磁盘的运行状况(特别是检查nodemanager-local-dirs和nodemanager-log-dirs),并根据为config属性设置的值达到坏目录数阈值yarn.nodemanager.disk-health-checker.min-healthy-disks,整个节点被标记为不健康,并且该信息也被发送到资源管理器。引导磁盘要么被突然检测,要么由运行状况检查程序脚本识别引导磁盘中的故障。

从属文件

在etc/hadoop/slaves 文件中列出所有的从属主机名或IP地址,每行一个。Helper脚本(如下所述)将使用etc/hadoop/slaves 文件一次在多台主机上运行命令。它不用于任何基于Java的Hadoop配置。为了使用此功能,必须为用于运行Hadoop的帐户建立ssh信任(通过无密码ssh或其他方式,例如Kerberos)。

Hadoop Rack 感知

许多Hadoop组件都具有机架感知功能,可以充分利用网络拓扑的性能和安全性。Hadoop守护进程通过调用管理员配置的模块获取集群中从属机架的机架信息。有关更多具体信息,请参阅RackAware文档。

强烈建议在启动HDFS之前配置机架感知。

日志

Hadoop 通过Apache Commons Logging框架使用Apache log4j进行日志记录。编辑etc/hadoop/log4j.properties 文件以定制Hadoop守护进程的日志记录配置(日志格式等)。

操作Hadoop集群

完成所有必要的配置后,将文件分发到所有机器上的 HADOOP_CONF_DIR 目录。这应该是所有机器上的相同目录。

通常,建议HDFS和YARN作为单独的用户运行。在大多数安装中,HDFS进程以'hdfs'执行。YARN通常使用“yarn”帐户。

Hadoop启动

要启动Hadoop集群,您需要启动HDFS和YARN集群。

第一次启动HDFS时,它必须格式化。将一个新的分布式文件系统格式化为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

使用以下命令启动YARN,在指定的ResourceManager上作为yarn

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

运行一个脚本在每个指定的主机上启动一个NodeManager作为yarn

[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]$ $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

[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

运行脚本以停止作为yarn上的NodeManager :

[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

停止WebAppProxy服务器。按照yarn在WebAppProxy服务器上运行。如果使用多个服务器进行负载平衡,则应在每个服务器上运行它们:

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

使用以下命令停止MapReduce JobHistory服务器,在指定服务器上以mapred方式运行

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

Web界面

一旦Hadoop集群启动并运行,请检查组件的web-ui,如下所述:


图片.png
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 151,511评论 1 330
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 64,495评论 1 273
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 101,595评论 0 225
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 42,558评论 0 190
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 50,715评论 3 270
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 39,672评论 1 192
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,112评论 2 291
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 29,837评论 0 181
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 33,417评论 0 228
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 29,928评论 2 232
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,316评论 1 242
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 27,773评论 2 234
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,253评论 3 220
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 25,827评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,440评论 0 180
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 34,523评论 2 249
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 34,583评论 2 249

推荐阅读更多精彩内容