分享

原Hadoop集群环境部署(Cluster environment)

pig2 2013-11-21 19:15:22 发表于 介绍解说 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 1 9330
本帖最后由 pig2 于 2013-11-21 19:16 编辑

  1.     参考文档

l  Apache官网Hadoop集群Cluster安装文档,原文地址

2. Hadoop基本概念

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

l  hadoop两种配置方式

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

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

l  $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.sh3.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远程管理监控

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

修改$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.xml3.2.2.1 NameNode配置
Parameter
Value
Notes
dfs.namenode.name.dir
NameNode命名空间和事务处理日志本地存储路径
该配置项可以配置多个路径,多路径用逗号分隔,用来对NameNode内容做备份冗余
dfs.namenode.hosts
dfs.namenode.hosts.exclude
允许的host列表.
拒绝的host列表
有需要的话可用用这两个配置项对NameNode的host进行控制
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.xml3.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清单
有需要的话设置

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

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

n  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.xml3.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 JVM的heap-size堆大小
mapreduce.reduce.memory.mb
3072
Reduces最大资源
mapreduce.reduce.java.opts
-Xmx2560M
Reduces Maps Child JVM的heap-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自动感知能力

l  HDFS和YARN组件是按自动感应方式设计的

l  NameNode和ResourceManager在管理员配置模块通过API实现对Slave节点的管理

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

l  特定站点模式可以使用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节点的hostname和IP地址都列上

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_DIRHadoop 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

本帖被以下淘专辑推荐:

已有(1)人评论

跳转到指定楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条