hadoop集群部署(yarn)

伴随着各大互联网公司开源自己的大数据框架,大数据处理领域的框架已经比较完善。到现在所谓大数据的框架已经用过habase(后来换成了elasticsearch)、zookeeper、kafka、storm,根据项目计划,接下来还要使用spark。虽然在众多框架中仅仅几个,但是也是已经涉及多个方面:数据存储、分布式协调、消息、实时计算等。没有找到任何一个框架能够完美解决所有问题,也就应了那句话,开发领域根本就没有银色子弹。所以即使是比较年长的hadoop(2004年到现在已经12年了,年纪也比较大了),也有能够体现其价值的地方。

最近用了storm,部署topology的时候总是感觉资源使用不平衡,于是想到了yarn能够对hadoop实现资源的协调,那是不是可以扩展一下,对storm也提供资源协调呢。google一下,果然yahho!已经开源了一个storm-yarn组件,于是学习一下,不过由于版本问题,最终没有顺利成功。不过倒是把hadoop的部署复习了一遍,反正还要使用hive处理数据,搭建的hadoop集群也不算浪费。这里把hadoop的集群部署记录一下,免的忘了。(关于hadoop的单机部署、伪分布式部署可以查看Hadoop环境部署)

1. 基础操作

这里说的基础操作是指对hadoop环境最基本的修改,比如提供java环境、指定 JAVA_HOME 、格式化namenode数据、免密码登录等,这些在Hadoop环境部署中都有提到,可以简单的看看。虽然简单,但是如果配置不正确,可能出现这种那种奇奇怪怪的错误。(这样一想,hadoop真的比较娇气。)

2. 文件配置

接下来就该对hadoop的文件进行修改,这是重头戏,修改好之后系统就能够顺利启动了。

2.1 服务器

这里使用了公司的4台服务器:

  • s108:yarn的ResourceManager
  • s151:hdfs的NameNode、SecondaryNameNode;yarn的NodeManager
  • s152:hdfs的DataNode;yarn的NodeManager
  • s153:hdfs的DataNode;yarn的NodeManager

也就是说,s108是单独的yarn服务,它的HA服务的另一台主机是s151;s151是hdfs的主节点;s152、s153是从节点。

2.2 core-site.xml

这个没有什么特别注意的,配置一下NameNode的host和端口、文件队列中io缓冲区大小、临时文件的路径就行:

  fs.defaultFS
  hdfs://s151:9000
  NameNode的URI


  io.file.buffer.size
  131072
  文件队列中io缓冲区大小


  hadoop.tmp.dir
  file:/home/search/hadoop/data

2.3 hdfs-site.xml

这个文件是NameNode的相关配置:

  dfs.namenode.secondary.http-address
  s151:9001


  dfs.namenode.name.dir
  file:/home/search/hadoop/data/dfs/name
  NameNode在本地文件系统中存储命名空间和持久化日志的位置


  dfs.blocksize
  268435456
  HDFS文件块大小:256MB


  dfs.namenode.handler.count
  100
  NameNode服务中处理DataNode的RPC调用的线程数


  dfs.datanode.data.dir
  file:/home/search/hadoop/data/dfs/data
  DataNode存储数据的位置,如果是用逗号隔开的多个路径,每个路径都存一份


  dfs.replication
  3
  数据复制数


  dfs.webhdfs.enabled
  true

2.4 mapred-site.xml

这个文件是配置MapReduce任务的配置:

  mapreduce.framework.name
  yarn
  设置执行job的是Yarn框架


  mapreduce.map.memory.mb
  1536
  map的最大可使用资源


  mapreduce.map.java.opts
  -Xmx1024M
  map的堆内存


  mapreduce.reduce.memory.mb
  3072
  reduce的最大可使用资源


  mapreduce.reduce.java.opts
  -Xmx2560M
  reduce堆内存


  mapreduce.task.io.sort.mb
  512
  数据排序时的内存大小


  mapreduce.task.io.sort.factor
  100
  数据排序时合并多个数据流


  mapreduce.reduce.shuffle.parallelcopies
  50
  当map数量多于reduce数量时,增加reduce并行副本数量。



  mapreduce.jobhistory.address
  s151:10020
  JobHistoryServer的URI


  mapreduce.jobhistory.webapp.address
  s151:19888
  JobHistoryServer web服务的URI


  mapreduce.jobhistory.intermediate-done-dir
  /mr-history/tmp
  job的历史数据的临时位置


  mapreduce.jobhistory.done-dir
  /mr-history/done
  job的历史数据的归档位置

2.5 yarn-site.xml

这个是配置ResourceManager和NodeManager的:



  yarn.acl.enable
  false
  使用使用ACL,默认是false


  yarn.admin.acl
  *
  集群中的管理员,用逗号隔开,默认是*,表示谁都可以


  yarn.log-aggregation-enable
  false
  是否开启日志聚类运算



  yarn.nodemanager.aux-services.mapreduce.shuffle.class
  org.apache.hadoop.mapred.ShuffleHandler


  yarn.resourcemanager.address
  s108:8032
  客户端提交任务的ResourceManager的URI/description>


  yarn.resourcemanager.scheduler.address
  s108:8030
  向调度器协调资源的URI


  yarn.resourcemanager.resource-tracker.address
  s108:8035
  为NodeManager提供的URI


  yarn.resourcemanager.admin.address
  s108:8033
  给管理命令的URI


  yarn.resourcemanager.webapp.address
  s108:8088
  ResourceManager的web服务URI



  yarn.nodemanager.aux-services
  mapreduce_shuffle
  排序服务



  yarn.resourcemanager.ha.enabled
  true
  是否弃用HA,默认false


  yarn.resourcemanager.ha.rm-ids
  rm1,rm2
  最少2个


  yarn.resourcemanager.hostname.rm1
  s108


  yarn.resourcemanager.hostname.rm2
  s151


  yarn.resourcemanager.recovery.enabled
  true


  yarn.resourcemanager.store.class
  org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore


  yarn.resourcemanager.zk-address
  10.6.2.56:2181,10.6.2.57:2181,10.6.2.58:2181
  ZooKeeper服务的地址,多个地址使用逗号隔开


  yarn.resourcemanager.cluster-id
  yarn-ha
  集群HA的id,用于在ZooKeeper上创建节点,区分使用同一个ZooKeeper集群的不同Hadoop集群

至此,可以算是配置结束,还有一些调优的参数,可以根据实际情况进行调整。

3. 测试

先在每个服务器上执行 hdfs namenode -format ,然后在s108上执行start-yarn.sh,在s151上执行start-dfs.sh。使用 jps 查看进程,可以得到文章开头所列出的进程列表。然后就使用举世闻名的wordcount进行测试。

mkdir input
echo "this is test" >> input/file
hadoop dfs -copyFromLocal input /input
hadoop jar ../default/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.3.jar wordcount /input /output

注意:

  1. 如果向按照上面执行,需要将hadoop的可执行程序加入PATH中;
  2. 需要保证hdfs的根目录中没有output文件夹,否则可以改个名字:output2…
  3. 因为使用使用Yarn管理任务,可以在浏览器访问 http://s108:8088/查看执行状态
稿源:沉潜飞动 (源链) | 关于 | 阅读提示

本站遵循[CC BY-NC-SA 4.0]。如您有版权、意见投诉等问题,请通过eMail联系我们处理。
酷辣虫 » 后端存储 » hadoop集群部署(yarn)

喜欢 (0)or分享给?

专业 x 专注 x 聚合 x 分享 CC BY-NC-SA 4.0

使用声明 | 英豪名录