本文目的是提供一个最小化的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:
[root@localhosthadoop]# pwd /root/hadoop [root@localhosthadoop]# ll 总用量 112 drwxr-xr-x. 2 rootroot194 2月14 01:01 bin drwxr-xr-x. 6 rootroot72 2月14 01:17 data drwxr-xr-x. 3 rootroot20 8月18 09:49 etc drwxr-xr-x. 2 rootroot106 8月18 09:49 include drwxr-xr-x. 3 rootroot20 8月18 09:49 lib drwxr-xr-x. 2 rootroot239 8月18 09:49 libexec -rw-r--r--. 1 rootroot 84854 8月18 09:49 LICENSE.txt drwxr-xr-x. 3 rootroot4096 2月14 02:02 logs -rw-r--r--. 1 rootroot 14978 8月18 09:49 NOTICE.txt -rw-r--r--. 1 rootroot1366 8月18 09:49 README.txt drwxr-xr-x. 2 rootroot4096 8月18 09:49 sbin drwxr-xr-x. 4 rootroot31 8月18 09:49 share 添加必要环境变量有了这两个环境变量,其他的环境变量基本都会自动生成,将它们加到~/.bashrc里:
exportJAVA_HOME=/usr exportHADOOP_HOME=/root/hadoop etc/hadoop/core-site.xml <configuration> <property> <name>fs.defaultFS</name> <value>hdfs://172.18.9.75:11000</value> </property> </configuration> fs.defaultFS:客户端访问hdfs的地址 etc/hadoop/hdfs-site.xml <configuration> <property> <name>dfs.namenode.name.dir</name> <value>file:/root/hadoop/data/namenode</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/root/hadoop/data/datanode</value> </property> <property> <name>dfs.replication</name> <value>1</value> </property> </configuration> dfs.namenode.name.dir:namenode的数据存储目录 dfs.datanode.data.dir:datanode的数据存储目录 dfs.replication:文件副本数为1,因为我只有一台虚拟机,所以只需要保存1份,生产环境建议3份。 etc/hadoop/yarn-site.xml <configuration> <!-- SitespecificYARNconfigurationproperties --> <property> <name>yarn.resourcemanager.hostname</name> <value>172.18.9.75</value> </property> <property> <name>yarn.nodemanager.hostname</name> <value>172.18.9.75</value> </property> <property> <name>yarn.nodemanager.local-dirs</name> <value>file:/root/hadoop/data/nodemanager</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> </configuration> 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 <configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>yarn.app.mapreduce.am.staging-dir</name> <value>/root/hadoop/data/staging</value> </property> </configuration> mapreduce.framework.name:使用yarn架构(默认不是yarn,一定要注意) yarn.app.mapreduce.am.staging-dir:mapreduce中间数据和准备数据的存储临时目录 启动 namenode sbin/hadoop-daemon.sh startnamenode datanode sbin/hadoop-daemon.sh startdatanode resourcemanager sbin/yarn-daemon.sh startresourcemanage nodemanager sbin/yarn-daemon.sh startnodemanager job historyserver sbin/mr-jobhistory-daemon.sh starthistoryserver 访问Web UI hdfs http://172.18.9.75:50070/ yarn http://172.18.9.75:8088/ job historyserver http://172.18.9.75:19888/ 执行mapreduce 上传input文件hadoop包里有一个NOTICE.txt文件,创建一个/input目录,将NOTICE.txt上传到目录里:
[root@localhosthadoop]# pwd /root/hadoop [root@localhosthadoop]# bin/hadoop fs -mkdir /input [root@localhosthadoop]# bin/hadoop fs -put ./NOTICE.txt /input 执行streaming bin/hadoopjar ./share/hadoop/tools/lib/hadoop-streaming-2.7.3.jar -input /input -output /output -mapper /bin/cat -reducer /bin/uniq该例子将文件按行去重并输出结果在/output目录:
[root@localhosthadoop]# bin/hadoop fs -ls /output Found 2 items -rw-r--r--1 rootsupergroup0 2017-02-14 02:48 /output/_SUCCESS -rw-r--r--1 rootsupergroup0 2017-02-14 02:48 /output/part-00000本文安装原则:端口基本采用默认,只改hostname,重要数据目录全部存储到data。