Hadoop集群环境部署(Cluster environment)

探讨问题的同胞们可以加QQ群:315309006

本文是基于hadoop0.23.9版本的说明
 

1.     参考文档

Apache官网Hadoop集群Cluster安装文档,Ctrl+鼠标左键点击这里进入链接地址

2. Hadoop基本概念

Hadoop经典模型一般会在集群里面专门指定一台机器作为NameNode,再指定一台作为资源管理节点ResourceManager

hadoop两种配置方式

只读方式配置(Read-only default configuration):直接修改core-default.xml, hdfs-default.xml, yarn-default.xml, mapred-default.xml四个配置文件(位置:$HADOOP_PREFIX\etc\hadoop

特定站点配置(Site-specific configuration):修改“$HADOOP_PREFIX\conf\”目录中的上述四个文件(可从$HADOOP_PREFIX\share\hadoop\common\templates\conf中去copy一份)

$HADOOP_PREFIX/ bin/目录是执行命令脚本的位置,hadoop命令用到的执行参数可以在$HADOOP_PREFIX/conf/hadoop-env.sh$HADOOP_PREFIX/etc/hadoop/yarn-env.sh/$HADOOP_PREFIX/conf/yarn-env.sh)文件中修改,如JDK路径等

3. Hadoop配置文件及参数

3.1 hadoop-env.sh/yarn-env.sh

3.1.1 配置项目

Daemon

Environment Variable

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

其他可配置的参数有:

Daemon

Environment Variable

ResourceManager

YARN_RESOURCEMANAGER_HEAPSIZE

NodeManager

YARN_NODEMANAGER_HEAPSIZE

WebAppProxy

YARN_PROXYSERVER_HEAPSIZE

Map Reduce Job History Server

HADOOP_JOB_HISTORYSERVER_HEAPSIZE

3.1.2 配置说明

启用JMX远程管理监控

效果:启用后可通过Jconsolehadoop各类节点进行远程监控

修改$hadoop_home/conf/hadoop_env.sh文件

export HADOOP_NAMENODE_OPTS="-Dcom.sun.management.jmxremote $HADOOP_NAMENODE_OPTS"

export XXXX=”-Dcom.sun.management.jmxremote $XXXX”

export HADOOP_NAMENODE_OPTS="-Dcom.sun.management.jmxremote $HADOOP_NAMENODE_OPTS -Dcom.sun.management.jmxremote.port=8003"

Dcom.sun.management.jmxremote.port=8006端口号

Dcom.sun.management.jmxremote.ssl=false ssl安全认证false

Dcom.sun.management.jmxremote.authenticate=false 用户认证false

3.2 Non-Secure Mode配置

3.2.1 conf/core-site.xml

Parameter

Value

Notes

fs.defaultFS

NameNode URI

格式如:hdfs://host:port/

默认的文件服务的协议和NS逻辑名称,和hdfs-site里的对应,取代了1.0版本中的fs.default.name

io.file.buffer.size

131072

读写序列化文件缓冲区大小

3.2.2 conf/hdfs-site.xml

3.2.2.1 NameNode配置

Parameter

Value

Notes

dfs.namenode.name.dir

NameNode命名空间和事务处理日志本地存储路径

该配置项可以配置多个路径,多路径用逗号分隔,用来对NameNode内容做备份冗余

dfs.namenode.hosts 

dfs.namenode.hosts.exclude

允许的host列表.

拒绝的host列表

有需要的话可用用这两个配置项对NameNodehost进行控制

dfs.blocksize

67108864 /64M

134217728 /128M

268435456 /256M

HDFS(分布式文件系统)文件块大小,默认是256MB,设置数值较大的话计算时用的map较少,太小的话浪费可用的map资源,这里根据需要设置,笔者提示:最好对自己的应用做个分析,最终文件是用来提供什么服务的

dfs.namenode.handler.count

100

Hadoop系统里启动的任务线程数

3.2.2.2 DataNode配置

Parameter

Value

Notes

dfs.datanode.data.dir

DataNode本地文件存储的路径

该配置项可以配置多个路径,多路径时用逗号进行分隔,一般做集群的时候存储数据都是存储到在不同的设备里面;

多目录配置时,存储的数据会被存储到所有的配置目录里面

3.2.3 conf/yarn-site.xml

3.2.3.1 ResourceManager and NodeManager

Parameter

Value

Notes

yarn.acl.enable

true /false

用来控制是否打开访问控制列表,ACL的英文是Access Control List

访问控制列表,默认值是false

yarn.admin.acl

Admin ACL

ACL用来设置集群管理员,可以设置多人,多人设置用逗号分隔,默认值是*,表示任何人;

如果是空格的话表示所有人都不能访问;

yarn.log-aggregation-enable

false

配置是否启用日志聚合

yarn.admin.acl用来设定集群管理员,服务级别的权限控制是通过配置hadoop-policy.xml实现。

3.2.3.2 ResourceManager

Parameter

Value

Notes

yarn.resourcemanager.address

用来设置客户端提交job

host:port

yarn.resourcemanager.scheduler.address

用来做主节点和资源节点间的任务调度

host:port

yarn.resourcemanager.resource-tracker.address

资源跟踪地址

host:port

yarn.resourcemanager.admin.address

管理命令

host:port

yarn.resourcemanager.webapp.address

资源管理界面

host:port

yarn.resourcemanager.scheduler.class

资源调度算法

ResourceManager Schedule class

默认采用CapacityScheduler容量调度算法(hadoop推荐使用的算法);

可选项还有FifoScheduler先进先出算法;

yarn.scheduler.minimum-allocation-mb

每个调度的最小内存设置

In MBs

yarn.scheduler.maximum-allocation-mb

每个调度的最大内存设置

In MBs

yarn.resourcemanager.nodes.include-path 

yarn.resourcemanager.nodes.exclude-path

允许/拒绝的NodeManager清单

有需要的话设置

资源调度算法的class(yarn.resourcemanager.scheduler.class配置项):

org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler

org.apache.hadoop.yarn.server.resourcemanager.scheduler.fifo.FifoScheduler

3.2.3.3 NodeManager

Parameter

Value

Notes

yarn.nodemanager.resource.memory-mb

NodeManager可用的物理内存,单位是MB

定义NodeManager的资源

yarn.nodemanager.vmem-pmem-ratio

虚拟内存比例

任务过程中如果对内存的需求超过物理内存的话将启用虚拟内存进行任务处理,虚拟内存最大值靠该处设置的比例进行控制

yarn.nodemanager.local-dirs

中间数据写入的路径,多路径用逗号分隔

多路径配置的话可以降低磁盘的I/O

yarn.nodemanager.log-dirs

日志文件写入的路径,多路径用逗号分隔

多路径配置的话可以降低磁盘的I/O

yarn.nodemanager.log.retain-seconds

10800

单位为秒,日志在本地保存的默认时间,这项仅在日志聚合关闭的时候使用

yarn.nodemanager.remote-app-log-dir

/logs

该项仅在日志聚合开启时使用,应用程序完成后,应用程序的日志将被移到该目录下

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

logs

该项仅在日志聚合开启时使用,日志将被聚合到目录${yarn.nodemanager.remote-app-log-dir}/${user}/${thisParam}

yarn.nodemanager.aux-services

mapreduce.shuffle

Map Reduce应用程序设置故障诊断服务

3.2.3.4 History Server (Needs to be moved elsewhere)

Parameter

Value

Notes

yarn.log-aggregation.retain-seconds

-1

设置聚合日志保留时间,-1表示不作控制

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

-1

设置检查日志频率,如果满足删除条件的话,执行删除操作,如果这里的值是0或者-1的话,这个时间默认会按聚合日志保留时间的十分之一计算。

3.2.4 conf/mapred-site.xml

3.2.4.1 MapReduce Applications

Parameter

Value

Notes

mapreduce.framework.name

yarn

运行框架设置为 Hadoop YARN

mapreduce.map.memory.mb

1536

Maps最大资源

mapreduce.map.java.opts

-Xmx1024M

Maps Child JVMheap-size堆大小

mapreduce.reduce.memory.mb

3072

Reduces最大资源

mapreduce.reduce.java.opts

-Xmx2560M

Reduces Maps Child JVMheap-size堆大小

mapreduce.task.io.sort.mb

512

sort整理数据最大使用内存设置

mapreduce.task.io.sort.factor

100

整理数据时一次合并的流数量

mapreduce.reduce.shuffle.parallelcopies

50

Reduce运行的最大并行复制数量,用来获取大量maps的输出

3.2.4.2 MapReduce JobHistory Server

Parameter

Value

Notes

mapreduce.jobhistory.address

MapReduce Job历史服务Server host:port

默认端口10020.

mapreduce.jobhistory.webapp.address

MapReduce Job历史服务的web界面host:port

默认端口19888.

mapreduce.jobhistory.intermediate-done-dir

/mr-history/tmp

MapReduce jobs写入历史文件的目录

mapreduce.jobhistory.done-dir

/mr-history/done

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

 

4. Hadoop自动感知能力

HDFSYARN组件是按自动感应方式设计的

NameNodeResourceManager在管理员配置模块通过API实现对Slave节点的管理

API给每个DNS或者IP分配一个Rack ID

特定站点模式可以使用topology.node.switch.mapping.impl进行定义,默认的实现方式是运行一个脚本命令来配置topology.script.file.name

5. Hadoop节点监测

Hadoop提供了节点监测机制NodeManagers,如果节点出现异常,ResourceManager将不再把任务发给该节点,直到异常节点恢复为止。

健康监测脚本在conf/yarn-site.xml配置

Parameter

Value

Notes

yarn.nodemanager.health-checker.script.path

Node health script

Script to check for node's health status.

yarn.nodemanager.health-checker.script.opts

Node health script options

Options for script to check for node's health status.

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

Node health script interval

Time interval for running health script.

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

Node health script timeout interval

Timeout for health script execution.

6. Hadoop Slave File

通常集群环境里面只有一个NameNode和一个ResourceManager,在conf/slaves把所有slave节点的hostnameIP地址都列上

7. Hadoop系统日志

Hadoop日志是用apache log4j实现的,可同过conf/log4j.properties对日志进行配置。

8. Hadoop系统运行

配置完成以后,将配置文件HADOOP_CONF_DIR 分发到集群内所有节点上

8.1 Hadoop启动

To start a Hadoop cluster you will need to start both the HDFS and YARN cluster.

Format a new distributed filesystem:

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

Start the HDFS with the following command, run on the designated NameNode:

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

Run a script to start DataNodes on all slaves:

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

Start the YARN with the following command, run on the designated ResourceManager:

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

Run a script to start NodeManagers on all slaves:

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

Start a standalone WebAppProxy server. If multiple servers are used with load balancing it should be run on each of them:

$ $HADOOP_YARN_HOME/bin/yarn start proxyserver --config $HADOOP_CONF_DIR

Start the MapReduce JobHistory Server with the following command, run on the designated server:

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

Hadoop Shutdown

Stop the NameNode with the following command, run on the designated NameNode:

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

Run a script to stop DataNodes on all slaves:

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

Stop the ResourceManager with the following command, run on the designated ResourceManager:

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

Run a script to stop NodeManagers on all slaves:

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

Stop the WebAppProxy server. If multiple servers are used with load balancing it should be run on each of them:

$ $HADOOP_YARN_HOME/bin/yarn stop proxyserver --config $HADOOP_CONF_DIR

Stop the MapReduce JobHistory Server with the following command, run on the designated server:

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

探讨问题的同胞们可以加QQ群:315309006

你可能感兴趣的:(hadoop,集群,cluster,hadoop0.23.9)