您的位置:首页 > 运维架构

hadoop2.7.2学习笔记02-启动集群

2017-04-28 16:31 375 查看
  一般集群中的一台机器作为NameNode,另一台机器作为ResourceManager,这是masters。

  剩下的服务(Web App Proxy Server和MapReduce Job History server)会运行在专用硬件或者共享设施上,这取决于加载方式。(这一块还不太理解)

  master之外的机器都是DataNode和NodeManager。他们属于slaves。

  Hadoop有两类重要的配置文件

  只读的默认配置文件(包括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 ,
etc/hadoop/mapred-env.sh,这三个文件来控制bin目录下的hadoop脚本。

  Hadoop的守护进程包括

  HDFS的NameNode,SecondaryNameNode,DataNode

  YARN的ResourceManager,NodeManager,WebAppProxy

  此外还有个前面提到过的MapReduce Job History server

  某个hadoop实例运行的守护进程不同,所需的配置也不太一样。

  大致关系是这样的:

DaemonEnvironment Variable
NameNodeHADOOP_NAMENODE_OPTS
DataNodeHADOOP_DATANODE_OPTS
Secondary NameNodeHADOOP_SECONDARYNAMENODE_OPTS
ResourceManagerYARN_RESOURCEMANAGER_OPTS
NodeManagerYARN_NODEMANAGER_OPTS
WebAppProxyYARN_PROXYSERVER_OPTS
Map Reduce Job History ServerHADOOP_JOB_HISTORYSERVER_OPTS
例如配置NameNode节点使用parallelGC功能,需要将下面的语句添加到hadoop-env.sh

export HADOOP_NAMENODE_OPTS="-XX:+UseParallelGC"

其他配置还包括:

HADOOP_PID_DIR -指定用于存储守护进程id files的目录

HADOOP_LOG_DIR -指定用于存储守护进程log files的目录

HADOOP_HEAPSIZE / YARN_HEAPSIZE-指定最大的heapsize,单位是MB

HADOOP_PREIFX-貌似就是个前缀,还需要在系统级别配置这个环境变量。实际就是hadoop的安装目录,哈哈。

此外还有下面的环境变量:

DaemonEnvironment Variable
ResourceManagerYARN_RESOURCEMANAGER_HEAPSIZE
NodeManagerYARN_NODEMANAGER_HEAPSIZE
WebAppProxyYARN_PROXYSERVER_HEAPSIZE
Map Reduce Job History ServerHADOOP_JOB_HISTORYSERVER_HEAPSIZE
配置Hadoop守护进程

etc/hadoop/core-site.xml中

ParameterValueNotes
fs.defaultFSNameNode URI主节点URI,类似hdfs://host:port/
io.file.buffer.size131072SequenceFiles的读写缓存
etc/hadoop/hdfs-site.xml中
为NameNode配置

ParameterValueNotes
dfs.namenode.name.dirNameNode持久化namespace和事务日志的目录可以配多个目录以保证冗余,逗号分隔。
dfs.hosts / dfs.hosts.excludepermitted和excluded的datanodes清单使用这些文件来管理allowable datanode清单
dfs.blocksize268435456HDFS blocksize
dfs.namenode.handler.count100处理来自DataNodes的RPC(remote procedure call)的线程数
为DataNode配置
ParameterValueNotes
dfs.datanode.data.dir用于存储blocks的目录,用逗号做分隔符数据将会存储在所有列举出的目录中
etc/hadoop/yarn-site.xml
ResourceManager和NodeManager的配置

Parameter

 ValueNotes
yarn.acl.enabletrue / false是否开启ACLs(一种权限管理),默认false.
yarn.admin.aclAdmin ACL设置集群的管理。由由逗号分隔的用户和逗号分隔的group组成,这两部分中间用空格隔开。默认是*表示所有人都可以访问,若设置为空格则表示所有人无权访问。
yarn.log-aggregation-enablefalse是否开启 log aggregation
为ResourceManager配置

ParameterValueNotes
yarn.resourcemanager.addressResourceManager host:port for clients to submit jobs.host:port If set, overrides the hostname set in yarn.resourcemanager.hostname.
yarn.resourcemanager.scheduler.addressResourceManager host:port for ApplicationMasters to talk to Scheduler to obtain resources.host:port If set, overrides the hostname set in yarn.resourcemanager.hostname.
yarn.resourcemanager.resource-tracker.addressResourceManager host:port for NodeManagers.host:port If set, overrides the hostname set in yarn.resourcemanager.hostname.
yarn.resourcemanager.admin.addressResourceManager host:port for administrative commands.host:port If set, overrides the hostname set in yarn.resourcemanager.hostname.
yarn.resourcemanager.webapp.addressResourceManager web-ui host:port.host:port If set, overrides the hostname set in yarn.resourcemanager.hostname.
yarn.resourcemanager.hostnameResourceManager host.host Single hostname that can be set in place of setting all
yarn.resourcemanager*address resources. Results in default ports for ResourceManager components.
yarn.resourcemanager.scheduler.classResourceManager Scheduler class.CapacityScheduler (recommended), FairScheduler (also recommended), or
FifoScheduler
yarn.scheduler.minimum-allocation-mbMinimum limit of memory to allocate to each container request at the
Resource Manager.
In MBs
yarn.scheduler.maximum-allocation-mbMaximum limit of memory to allocate to each container request at the
Resource Manager.
In MBs
yarn.resourcemanager.nodes.include-path / yarn.resourcemanager.nodes.exclude-pathpermitted/excluded NodeManagers清单.使用该清单来控制allowable NodeManagers.
为NodeManager配置

ParameterValueNotes
yarn.nodemanager.resource.memory-mbNodeManager的可用物理内存,单位MB定义NodeManager中可以用来运行容器的所有资源
yarn.nodemanager.vmem-pmem-ratio任务所占用的虚拟内存超过物理内存的最大比例虚拟内存可以按照这个比例超过物理内存
yarn.nodemanager.local-dirs媒介数据存放的目录配置多个路径可以分散IO
yarn.nodemanager.log-dirs日志文件存放的目录配置多个路径可以分散IO
yarn.nodemanager.log.retain-seconds10800仅当log-aggregation失效时才有效,用来指定日志文件存放在NodeManager的默认时间。单位是秒
yarn.nodemanager.remote-app-log-dir/logs仅当log-aggregation生效时才有效。当应用结束时,日志文件将会转移到这个HDFS目录。需要设置合适的权限。
yarn.nodemanager.remote-app-log-dir-suffixlogs仅当log-aggregation生效时才有效。远程日志目录的后缀名,日志将会被聚集到${yarn.nodemanager.remote-app-log-dir}/${user}/${thisParam}
yarn.nodemanager.aux-servicesmapreduce_shuffleMap Reduce applications.所需的Shuffle service
为History Server配置

ParameterValueNotes
yarn.log-aggregation.retain-seconds-1保存聚合日志的时间。-1表示无效。
yarn.log-aggregation.retain-check-interval-seconds-1检查聚合日志保存时间的时间间隔,0或负数表示聚合日志保存时间的十分之一。
etc/hadoop/mapred-site.xml
为MapReduce Application配置

Parameter ValueNotes
mapreduce.framework.nameyarn将执行的框架设置为YARN
mapreduce.map.memory.mb1536maps操作的资源上限
mapreduce.map.java.opts-Xmx1024Mmaps操作的子虚拟机的heap-size上限
mapreduce.reduce.memory.mb3072reduces操作的资源上限
mapreduce.reduce.java.opts-Xmx2560Mreduces子虚拟机的heap-size上限
mapreduce.task.io.sort.mb512执行sorting data for efficiency(为了提升效率而进行的排序操作)时的内存上限
mapreduce.task.io.sort.factor100对文件进行排序时,一次融合的流的数目
mapreduce.reduce.shuffle.parallelcopies50reduce操作中,从maps操作的大的结果集中复制数据的最大并行数.
为MapReduce JobHistory Server配置

Parameter ValueNotes
mapreduce.jobhistory.addressMapReduce JobHistory 服务器的 host:port默认端口是10020.
mapreduce.jobhistory.webapp.addressMapReduce JobHistory Server Web UI的 host:port默认端口是19888.
mapreduce.jobhistory.intermediate-done-dir/mr-history/tmp写入历史文件的目录
mapreduce.jobhistory.done-dir/mr-history/doneMR JobHistory Server管理历史文件的目录
监控NodeManager
hadoop允许管理者配置NodeManager,使其周期性执行一个管理者提供的脚本来判断这个节点是否是健康的。

若该脚本判断节点不健康,它需要打印以Error开头的一行信息到标准输出。NodeManager周期性执行该脚本,并检查输出。若检查到ERROR,则标记该节点为unhealthy。接着ResourceManager会将该节点加入黑名单,接下来的任务也不会被提交到该节点。直到某次运行脚本时检测结果为healthy才将它从黑名单移除。

下列etc/hadoop/yarn-site.xml中的参数用来控制节点健康监控脚本

Parameter ValueNotes
yarn.nodemanager.health-checker.script.pathNode health scriptcheck使用的脚本
yarn.nodemanager.health-checker.script.optsNode health script optionscheck脚本使用的options
yarn.nodemanager.health-checker.script.interval-msNode health script interval运行check脚本的时间间隔
yarn.nodemanager.health-checker.script.timeout-msNode health script timeout intervalcheck脚本执行的超时时间
check脚本没必要检测硬盘。因为NodeManager会周期性检测本地硬盘。yarn.nodemanager.disk-health-checker.min-healthy-disks参数可以配置NodeManager加入黑名单的可用硬盘阈值。
Slaves File

在etc/hadoop/slaves文件中列出所有slave的hostname或IP地址,一个一行。Helper脚本将会使用这个文件中的清单来在多个主机执行命令。它不会被任何基于java的配置项使用。为使用该功能,运行hadoop的账号需要实现ssh免密码登录。

Hadoop Rack Awareness

hadoop很多组件都是机架敏感的。hadoop守护进程通过激活一个管理者配置的模型来获得关于机架的信息。

Hadoop日志打印使用log4j,配置文件位于etc/hadoop/log4j.properties

操作Hadoop集群

完成以上配置后,可以将它们集中发送到所有机器的HADOOP_CONF_DIR目录(猜测就是etc/hadoop)。

推荐用不同的用户运行HDFS和YARN。

启动步骤

1、格式化dfs

[hdfs]$ $HADOOP_PREFIX/bin/hdfs namenode -format <cluster_name>(我觉得这个集群名称是可以随便取的)

2、启动hdfs的namenode

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

3、启动datanode

[hdfs]$ $HADOOP_PREFIX/sbin/hadoop-daemons.sh --config $HADOOP_CONF_DIR --script hdfs start datanode

4、如果etc/hadoop/slaves和ssh免密码登录都配置好了,那么上面的操作可以用下面的脚本代替。

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

5、启动ResourceManager

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

6、启动NodeManager

[yarn]$ $HADOOP_YARN_HOME/sbin/yarn-daemons.sh --config $HADOOP_CONF_DIR start nodemanager

7、启动webAppProxy服务器,若采用多服务器负载均衡,则需要依次启动它们。

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

8、如果etc/hadoop/slaves和ssh免密码登录都配置好了,那么上面的操作可以用下面的脚本代替。

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

9、启动MapReduce JobHistory Server

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

关闭步骤

1、关闭NameNode

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

2、关闭DataNode

[hdfs]$ $HADOOP_PREFIX/sbin/hadoop-daemons.sh --config $HADOOP_CONF_DIR --script hdfs stop datanode

3、如果etc/hadoop/slaves和ssh免密码登录都配置好了,那么上面的操作可以用下面的脚本代替。

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

4、关闭ResourceManager

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

5、关闭NodeManager

[yarn]$ $HADOOP_YARN_HOME/sbin/yarn-daemons.sh --config $HADOOP_CONF_DIR stop nodemanager

6、如果etc/hadoop/slaves和ssh免密码登录都配置好了,那么上面的操作可以用下面的脚本代替。

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

7、关闭WebAppProxy server.

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

8、关闭MapReduce JobHistory Server

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

其中中括号中的是执行命令行的账号。

Web Interfaces

下面列举了hadoop集群的所有web ui

Daemon Web InterfaceNotes
NameNodehttp://nn_host:port/Default HTTP port is 50070.
ResourceManagerhttp://rm_host:port/Default HTTP port is 8088.
MapReduce JobHistory Serverhttp://jhs_host:port/Default HTTP port is 19888.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  hadoop