Hadoop3.0集群安装知识

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: Hadoop3.0集群安装知识

目的



本文档介绍如何安装和配置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

HDFS_NAMENODE_OPTS

DataNode

HDFS_DATANODE_OPTS

Secondary NameNode

HDFS_SECONDARYNAMENODE_OPTS

ResourceManager

YARN_RESOURCEMANAGER_OPTS

NodeManager

YARN_NODEMANAGER_OPTS

WebAppProxy

YARN_PROXYSERVER_OPTS

Map Reduce Job History Server

MAPRED_HISTORYSERVER_OPTS

例如,要将Namenode配置为使用parallelGC和一个4GB的Java Heap,应该在hadoop-env.sh中添加以下语句:


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中的一个简单的脚本:


HADOOP_HOME=/path/to/hadoop
 export HADOOP_HOME


配置Hadoop守护进程




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

etc/hadoop/core-site.xml

参数

说明

fs.defaultFS

NameNode URI

hdfs://host:port/

io.file.buffer.size

131072

SequenceFiles使用的读/写缓冲区的大小。

etc/hadoop/hdfs-site.xml

配置NameNode


参数

说明

dfs.namenode.name.dir

NameNode 存储namespace和持久化日志存储的本地文件系统路径

如果是以逗号分隔的目录列表,那么数据将被复制到所有目录中,以实现冗余。

dfs.hosts / dfs.hosts.exclude

permitted/excluded DataNodes表

如有必要,使用这些文件来控制允许的datanode列表

dfs.blocksize

268435456

HDFS块大小为256MB。


dfs.namenode.handler.count

100

用来处理来自DataNode的RPC请求的线程数量


配置datanode

参数

说明

dfs.datanode.data.dir

逗号分隔的DataNode的本地文件系统上应该存储块的路径列表。

如果这是逗号分隔的目录列表,则数据将存储在所有指定的目录中,通常位于不同的devices上。

dfs.datanode.data.dir主要用来扩容,当旧目录已经满,添加新的磁盘的时候,可以使用此属性。更多参考

如何扩容DataNode及遇到问题总结


etc/hadoop/yarn-site.xml

配置ResourceManager和NodeManager:

参数

说明

yarn.acl.enable

true / false

是否启用ACL, 默认为false。

yarn.admin.acl

Admin ACL

ACL在集群上设置管理员。ACLs 适用于 comma-separated-usersspacecomma-separated-groups。默认值为*,代表任何人可以访问。指定为space值代表没有人可以访问

yarn.log-aggregation-enable

false

启用或禁用日志聚合的配置

yarn.admin.acl:以逗号分隔的用户列表+空格+以逗号分隔的用户组列表",例如 "user1,user2 group1,group2"。如果只有组信息,需要在最前端加入一个空格,例如" group1,group2"。【参考鈞少的博客】



配置ResourceManager:


参数

说明

yarn.resourcemanager.address

ResourceManager host:port :客户端通过该地址向RM提交作业

如果设置host:port  ,会覆盖在yarn.resourcemanager.hostname

中设置的hostname

yarn.resourcemanager.scheduler.address

ResourceManager host:port  ApplicationMasters 与Scheduler通信获取资源.

ResourceManager 对ApplicationMaster暴露的访问地址

如果设置host:port , 会覆盖yarn.resourcemanager.hostname

中设置的hostname

yarn.resourcemanager.resource-tracker.address

ResourceManager 对NodeManager暴露的地址

如果设置host:port , 会覆盖yarn.resourcemanager.hostname中

设置的hostname

yarn.resourcemanager.admin.address

ResourceManager 对管理员暴露的访问地址

如果设置host:port , 会覆盖yarn.resourcemanager.hostname

中设置的hostname

yarn.resourcemanager.webapp.address

ResourceManager对外web ui地址

如果设置host:port , 会覆盖yarn.resourcemanager.hostname

中设置的hostname

yarn.resourcemanager.hostname

ResourceManager host.

hostname设置,可以被上述替换

yarn.resourcemanager.scheduler.class


CapacityScheduler(推荐),FairScheduler(也推荐)
或FifoScheduler。 使用完全限定的类名,例如org.apache.hadoop.yarn.server.resourcemanager.
scheduler.fair.FairScheduler。

yarn.scheduler.minimum-allocation-mb

在资源管理器上分配给每个容器请求的内存的最小限度。

In MBs

yarn.scheduler.maximum-allocation-mb

在资源管理器上分配给每个容器请求的内存的最大限度

In MBs

yarn.resourcemanager.nodes.include-path / yarn.resourcemanager.nodes.exclude-path

NodeManagers permitted/excluded列表

如果需要,使用这些文件控制允许的NodeManagers列表。

配置NodeManager:



参数

Notes

yarn.nodemanager.resource.memory-mb

资源即可用的物理内存,以MB为单位,用于给定的NodeManager

定义NodeManager上可用于运行容器的总可用资源



yarn.nodemanager.vmem-pmem-ratio

任务的虚拟内存使用量可能超过物理内存的最大比率

每个任务虚拟内存使用超过它的物理内存限制的比率。

NodeManager的任务使用的虚拟内存的总量超过物理内存使用的比率

yarn.nodemanager.local-dirs

写入中间数据的本地文件系统上目录用逗号分隔的列表。


多个路径有助于扩展磁盘I/O。

yarn.nodemanager.log-dirs

写入日志的本地文件系统的路径逗号分割列表

多个路径有助于扩展磁盘I/O。

yarn.nodemanager.log.retain-seconds

10800

在NodeManager上保留日志文件的缺省时间(以秒为单位)

仅在 log-aggregation禁用的情况下适用


yarn.nodemanager.remote-app-log-dir

/logs

应用程序完成时,日志被转移到的HDFS目录。需要设置适当权限。

仅在启用log-aggregation的情况下适用。


yarn.nodemanager.remote-app-log-dir-suffix

logs

追加到远程日志目录。日志将会聚合到

${yarn.nodemanager.remote-app-log-dir}/${user}/${thisParam} ,

仅适用于log-aggregation启用


yarn.nodemanager.aux-services

mapreduce_shuffle

Shuffle服务需要设置map reduce应用程序


yarn.nodemanager.env-whitelist

环境属性应该继承制NodeManagers的Containers

对于mapreduce应用程序除了默认值HADOOP_MAPRED_HOME被添加。

属性值还有JAVA_HOME,HADOOP_COMMON_HOME,

HADOOP_HDFS_HOME,

HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,

HADOOP_YARN_HOME,

HADOOP_MAPRED_HOME



配置History Server (需要移到其它地方):



参数

说明

yarn.log-aggregation.retain-seconds

-1

配置多久后聚合日志文件被删除, 配置成 -1禁用此功能。注意不要设置太小


yarn.log-aggregation.retain-check-interval-seconds

-1

检查聚合日志保留期间的时间。如果设置为0或负值,则计算该值为汇总日志保留时间的十分之一。注意不要配置太小


etc/hadoop/mapred-site.xml


配置MapReduce应用程序:


参数

说明

mapreduce.framework.name

yarn

执行框架设置为 Hadoop YARN


mapreduce.map.memory.mb

1536


每个Map Task需要的内存量

mapreduce.map.java.opts

-Xmx1024M

map子jvm的最大 heap-size


mapreduce.reduce.memory.mb

3072

每个reduce需要的最大内存


mapreduce.reduce.java.opts

-Xmx2560M

reduces子jvm的最大 heap-size



mapreduce.task.io.sort.mb

512

当数据排序时,更高的memory-limit

mapreduce.task.io.sort.factor

100

当排序文件时,一次合并更多的流


mapreduce.reduce.shuffle.parallelcopies

50

reduce运行更多数量的的并行的copies,获取map大量的输出

配置MapReduce JobHistory Server:


参数

说明

mapreduce.jobhistory.address

MapReduce JobHistory Server 访问地址

默认端口10020.

mapreduce.jobhistory.webapp.address

MapReduce JobHistory Server Web UI 访问地址

默认端口knnaauudnerom19888.

mapreduce.jobhistory.intermediate-done-dir

/mr-history/tmp

mapreduce job所写历史文件的路径


mapreduce.jobhistory.done-dir

/mr-history/done

MR JobHistory Server管理历史文件的目录


监测NodeManagers的健康状况



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


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


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


参数

说明

yarn.nodemanager.health-checker.script.path

Node health script

脚本监测节点的健康状态


yarn.nodemanager.health-checker.script.opts

Node health script options

脚本选项检查节点的健康状态。

yarn.nodemanager.health-checker.interval-ms

Node health script interval

运行健康脚本的时间间隔。

yarn.nodemanager.health-checker.script.timeout-ms

Node health script timeout interval

健康脚本执行超时。

如果本地磁盘损坏,健康脚本监测不支持给出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,需要格式化.格式化命令:


[hdfs]$ $HADOOP_HOME/bin/hdfs namenode -format <cluster_name>

在指定节点上使用以下命令启动HDFS NameNode:


[hdfs]$ $HADOOP_HOME/bin/hdfs --daemon start namenode

在每个指定的节点上使用以下命令启动HDFS数据节点:


[hdfs]$ $HADOOP_HOME/bin/hdfs --daemon start datanode

如果配置了etc/hadoop/workers和ssh信任访问,则可以使用下面命令启动所有HDFS进程。


[hdfs]$ $HADOOP_HOME/sbin/start-dfs.sh

用下面的命令启动YARN,在指定的ResourceManager上运行。


[yarn]$ $HADOOP_HOME/bin/yarn --daemon start resourcemanager

运行一个脚本,在每个指定的主机上启动一个NodeManager:


[yarn]$ $HADOOP_HOME/bin/yarn --daemon start nodemanager

启动一个独立的webappproxy服务器。运行webappproxy服务器为Yarn用户。如果使用多个服务器进行负载平衡,则应该在每个服务器上运行它们:


[yarn]$ $HADOOP_HOME/bin/yarn --daemon start proxyserver

如果配置了etc/hadoop/workers和ssh信任访问(请参阅单节点设置),则可以使用程序脚本启动所有YARN进程。


[yarn]$ $HADOOP_HOME/sbin/start-yarn.sh

用以下命令启动MapReduce JobHistory服务器,在指定的服务器上运行:


[mapred]$ $HADOOP_HOME/bin/mapred --daemon start historyserver


集群关闭



使用下面命令停止namenode,在指定的NameNode 上运行


[hdfs]$ $HADOOP_HOME/bin/hdfs --daemon stop namenode

使用下面命令停止DataNode


[hdfs]$ $HADOOP_HOME/bin/hdfs --daemon stop datanode

如果配置了etc/hadoop/workers和ssh信任访问,则可以使用下面命令停止所有HDFS进程。


[hdfs]$ $HADOOP_HOME/sbin/stop-dfs.sh

使用下面命令停止ResourceManager ,在指定的ResourceManager上运行


[yarn]$ $HADOOP_HOME/bin/yarn --daemon stop resourcemanager

运行脚本停止worker上的NodeManager


[yarn]$ $HADOOP_HOME/bin/yarn --daemon stop nodemanager

如果配置了etc/hadoop/workers和ssh信任访问,则可以使用下面命令停止所有YARN 进程。



[yarn]$ $HADOOP_HOME/sbin/stop-yarn.sh

停止webappproxy服务器。运行webappproxy服务器为Yarn用户。如果使用多个服务器进行负载平衡,则应该在每个服务器上运行它们:



[yarn]$ $HADOOP_HOME/bin/yarn stop proxyserver

停止MapReduce JobHistory Server使用下面命令,在指定的机器上运行

[mapred]$ $HADOOP_HOME/bin/mapred --daemon stop historyserver


Web界面



一旦Hadoop集群启动并运行,可以通过web-ui查看,如下所述:

守护进程

Web 接口

说明

NameNode

http://nn_host:port/

默认 HTTP 接口 9870.

ResourceManager

http://rm_host:port/

默认HTTP 接口 8088.

MapReduce JobHistory Server

http://jhs_host:port/

默认HTTP 接口 19888.



相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
3月前
|
存储 分布式计算 监控
什么是 Hadoop 集群?
【8月更文挑战第12天】
230 4
|
6月前
|
存储 分布式计算 Hadoop
【Hadoop】Hadoop的三种集群模式
【4月更文挑战第9天】【Hadoop】Hadoop的三种集群模式
|
分布式计算 Hadoop Java
hadoop的本地部署
hadoop的本地部署
94 0
|
边缘计算 分布式计算 资源调度
Hadoop 集群的搭建与配置
你好看官,里面请!今天笔者讲的是Hadoop 集群的搭建与配置。不懂或者觉得我写的有问题可以在评论区留言,我看到会及时回复。 注意:本文仅用于学习参考,不可用于商业用途,如需转载请跟我联系。
759 1
Hadoop 集群的搭建与配置
|
分布式计算 Hadoop Java
Hadoop的伪分布式安装和配置
SSH免密码配置 (1) 创建一对密钥,命令:ssh-keygen (2)将密钥加入授权 (3)授权以后再通过命令即可实现无密码登录 JDK的安装和配置 (1)进入simple下soft中对jdk进行解压处理 (2)设置环境变量 (3)是环境变量生效 (4)测试是否安装成功 HADOOP安装 (1)hadoop安装包进行解压 (2)编辑配置文件core-site.xml文件 (4)编辑hdfs-site.xml文件 (5)执行格式化 (6)开启进程 (7)输入jps,显示出namenode和datanode一般就成功了
115 0
|
存储 资源调度 分布式计算
hadoop伪分布式部署(4)
hadoop伪分布式部署(4)
118 0
hadoop伪分布式部署(4)
|
分布式计算 Hadoop 网络安全
Hadoop的集群环境部署说明
Hadoop集群环境搭建是很多学习hadoop学习者或者是使用者都必然要面对的一个问题,网上关于hadoop集群环境搭建的博文教程也蛮多的。对于玩hadoop的高手来说肯定没有什么问题,甚至可以说事“手到擒来”的事情,但对于hadoop的初学者来说,hadoop集群环境的搭建着实压力不小。
1714 0
|
分布式计算 Hadoop
使用 Ambari 安装 Hadoop 集群
转自:使用 Ambari 安装 Hadoop 集群
935 0
|
分布式计算 资源调度 Java

相关实验场景

更多
下一篇
无影云桌面