理解与搭建hadoop

本文目的是提供一个最小化的hadoop配置与安装指南,版本使用最新稳定版本hadoop 2.7.3,它利用yarn实现资源管理。

架构

第二代hadoop在存储方面依旧基于namenode和datanode的架构来实现hdfs;在map-reduce方面架构改变很大,hadoop将集群资源管理和任务执行交给了yarn框架,并在yarn框架上开发了hadoop这个application来做调度。

hadoop通过提供客户端、applicationMaster、若干类库,从而可以让用户在yarn上轻松的执行map-reduce程序,在部署hadoop之前一定要理解yarn架构,否则寸步难行:点我学习

另外,2.x版本已经支持namenode和resourcemanager的高可用,它们基于zookeeper以及日志实现,对于这块的配置在此不做探究。

安装

下载hadoop

这里下载2.7.3的binary版本,解压到/root/hadoop:

添加必要环境变量

有了这两个环境变量,其他的环境变量基本都会自动生成,将它们加到~/.bashrc里:

etc/hadoop/core-site.xml

  • fs.defaultFS:客户端访问hdfs的地址

etc/hadoop/hdfs-site.xml

  • dfs.namenode.name.dir:namenode的数据存储目录
  • dfs.datanode.data.dir:datanode的数据存储目录
  • dfs.replication:文件副本数为1,因为我只有一台虚拟机,所以只需要保存1份,生产环境建议3份。

etc/hadoop/yarn-site.xml

  • yarn.resourcemanager.hostname:resourcemanage部署的机器host
  • yarn.nodemanager.hostname:nodemanager部署的机器host
  • yarn.nodemanager.local-dirs:nodemanager的数据存储目录
  • yarn.nodemanager.aux-services:配置支持mapreduce的shuffle

etc/hadoop/mapred-site.xml

  • mapreduce.framework.name:使用yarn架构(默认不是yarn,一定要注意)
  • yarn.app.mapreduce.am.staging-dir:mapreduce中间数据和准备数据的存储临时目录

启动

namenode

datanode

resourcemanager

nodemanager

job historyserver

访问Web UI

hdfs

yarn

job historyserver

执行mapreduce

上传input文件

hadoop包里有一个NOTICE.txt文件,创建一个/input目录,将NOTICE.txt上传到目录里:

执行streaming

该例子将文件按行去重并输出结果在/output目录:

MapReduce执行原理可以参考这里

本文安装原则:端口基本采用默认,只改hostname,重要数据目录全部存储到data。

如果文章帮助您解决了工作难题,您可以帮我点击屏幕上的任意广告,或者赞助少量费用来支持我的持续创作,谢谢~