Hadoop 一概述 狭义上来说Hadoop就是:
HDFS :分布式文件系统
MapReduce : 分布式计算系统
Yarn:分布式样集群资源管理
广义上来说:
Hadoop指代大数据的一个生态圈,包括很多其他软件:
历史版本与发行公司 2.1 Hadoop历史版本
1.x版本系列:hadoop版本当中的第二代开源版本,主要修复0.x版本的一些bug等
2.x版本系列:架构产生重大变化,引入了yarn平台等许多新特性
3.x版本系列: 加入多namenoode新特性
2.2 Hadoop三大发行版公司
http://hadoop.apache.org/
优点:拥有全世界的开源贡献者,代码更新迭代版本比较快,
缺点:版本的升级,版本的维护,版本的兼容性,版本的补丁都可能考虑不太周到,
apache所有软件的下载地址(包括各种历史版本):
http://archive.apache.org/dist/
https://hortonworks.com/
hortonworks主要是雅虎主导Hadoop开发的副总裁,带领二十几个核心成员成立Hortonworks,核心产品软件HDP(ambari),HDF免费开源,并且提供一整套的web管理界面,供我们可以通过web界面管理我们的集群状态,web管理界面软件HDF网址(http://ambari.apache.org/ )
https://www.cloudera.com/
cloudera主要是美国一家大数据公司在apache开源hadoop的版本上,通过自己公司内部的各种补丁,实现版本之间的稳定运行,大数据生态圈的各个版本的软件都提供了对应的版本,解决了版本的升级困难,版本兼容性等各种问题
二架构 1.x的版本架构模型介绍
文件系统核心模块:
NameNode:集群当中的主节点,管理元数据(文件的大小,文件的位置,文件的权限),主要用于管理集群当中的各种数据
secondaryNameNode:主要能用于hadoop当中元数据信息的辅助管理
DataNode:集群当中的从节点,主要用于存储集群当中的各种数据
数据计算核心模块:
JobTracker:接收用户的计算请求任务,并分配任务给从节点
TaskTracker:负责执行主节点JobTracker分配的任务
2.x的版本架构模型介绍 引入了yarn,其中MapReduce运行在yarn中
第一种:NameNode与ResourceManager单节点架构模型
文件系统核心模块:
NameNode:集群当中的主节点,主要用于管理集群当中的各种数据
secondaryNameNode:主要能用于hadoop当中元数据信息的辅助管理
DataNode:集群当中的从节点,主要用于存储集群当中的各种数据
数据计算核心模块:
ResourceManager:接收用户的计算请求任务,并负责集群的资源分配
NodeManager:负责执行主节点APPmaster分配的任务
第二种:NameNode单节点与ResourceManager高可用架构模型
文件系统核心模块:
NameNode:集群当中的主节点,主要用于管理集群当中的各种数据
secondaryNameNode:主要能用于hadoop当中元数据信息的辅助管理
DataNode:集群当中的从节点,主要用于存储集群当中的各种数据
数据计算核心模块:
ResourceManager:接收用户的计算请求任务,并负责集群的资源分配,以及计算任务的划分,通过zookeeper实现ResourceManager的高可用
NodeManager:负责执行主节点ResourceManager分配的任务
第三种:NameNode高可用与ResourceManager单节点架构模型
文件系统核心模块:
NameNode:集群当中的主节点,主要用于管理集群当中的各种数据,其中nameNode可以有两个,形成高可用状态
DataNode:集群当中的从节点,主要用于存储集群当中的各种数据
JournalNode:文件系统元数据信息管理
数据计算核心模块:
ResourceManager:接收用户的计算请求任务,并负责集群的资源分配,以及计算任务的划分
NodeManager:负责执行主节点ResourceManager分配的任务
第四种:NameNode高可用与ResourceManager高可用架构模型
文件系统核心模块:
NameNode:集群当中的主节点,主要用于管理集群当中的各种数据,一般都是使用两个,实现HA高可用
JournalNode:元数据信息管理进程,一般都是奇数个
DataNode:从节点,用于数据的存储
数据计算核心模块:
ResourceManager:Yarn平台的主节点,主要用于接收各种任务,通过两个,构建成高可用
NodeManager:Yarn平台的从节点,主要用于处理ResourceManager分配的任务
三Apache hadoop 编译 四 安装Apache Hadoop 例如 以三台服务为例:
节点规划:
服务器IP
192.168.174.***
192.168.174.***
192.168.174.***
主机名
node01
node02
node03
NameNode
是
否
否
SecondaryNameNode
是
否
否
dataNode
是
是
是
ResourceManager
是
否
否
NodeManager
是
是
是
解压:
1 tar -zxvf hadoop-2.7.5.tar.gz -C ../servers/
2 修改配置文件 配置文件位置:
1 2 cd /export/servers/hadoop-2.7.5/etc/hadoop vim core-site.xml
修改core-site.xml文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration > <property > <name > fs.default.name</name > <value > hdfs://node01:8020</value > </property > <property > <name > hadoop.tmp.dir</name > <value > /export/servers/hadoop-2.7.5/hadoopDatas/tempDatas</value > </property > <property > <name > io.file.buffer.size</name > <value > 4096</value > </property > <property > <name > fs.trash.interval</name > <value > 10080</value > </property > </configuration >
修改hdfs-site.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration > <property > <name > dfs.namenode.secondary.http-address</name > <value > node01:50090</value > </property > <property > <name > dfs.namenode.http-address</name > <value > node01:50070</value > </property > <property > <name > dfs.namenode.name.dir</name > <value > file:///export/servers/hadoop-2.7.5/hadoopDatas/namenodeDatas,file:///export/servers/hadoop-2.7.5/hadoopDatas/namenodeDatas2</value > </property > <property > <name > dfs.datanode.data.dir</name > <value > file:///export/servers/hadoop-2.7.5/hadoopDatas/datanodeDatas,file:///export/servers/hadoop-2.7.5/hadoopDatas/datanodeDatas2</value > </property > <property > <name > dfs.namenode.edits.dir</name > <value > file:///export/servers/hadoop-2.7.5/hadoopDatas/nn/edits</value > </property > <property > <name > dfs.namenode.checkpoint.dir</name > <value > file:///export/servers/hadoop-2.7.5/hadoopDatas/snn/name</value > </property > <property > <name > dfs.namenode.checkpoint.edits.dir</name > <value > file:///export/servers/hadoop-2.7.5/hadoopDatas/dfs/snn/edits</value > </property > <property > <name > dfs.replication</name > <value > 3</value > </property > <property > <name > dfs.permissions</name > <value > true</value > </property > <property > <name > dfs.blocksize</name > <value > 134217728</value > </property > </configuration >
修改hadoop-env.sh
1 export JAVA_HOME=/export/servers/jdk1.8.0_141
修改mapred-site.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 <configuration > <property > <name > mapreduce.job.ubertask.enable</name > <value > true</value > </property > <property > <name > mapreduce.jobhistory.address</name > <value > node01:10020</value > </property > <property > <name > mapreduce.jobhistory.webapp.address</name > <value > node01:19888</value > </property > <property > <name > mapreduce.framework.name</name > <value > yarn</value > </property > </configuration >
修改yarn-site.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 <configuration > <property > <name > yarn.resourcemanager.hostname</name > <value > node01</value > </property > <property > <name > yarn.nodemanager.aux-services</name > <value > mapreduce_shuffle</value > </property > <property > <name > yarn.log-aggregation-enable</name > <value > true</value > </property > <property > <name > yarn.log-aggregation.retain-seconds</name > <value > 604800</value > </property > <property > <name > yarn.nodemanager.resource.memory-mb</name > <value > 20480</value > </property > <property > <name > yarn.scheduler.minimum-allocation-mb</name > <value > 2048</value > </property > <property > <name > yarn.nodemanager.vmem-pmem-ratio</name > <value > 2.1</value > </property > </configuration >
修改mapred-env.sh
1 export JAVA_HOME=/export /servers/jdk1.8.0_141
修改slaves
创建目录:
1 2 3 4 5 6 7 8 mkdir -p /export/servers/hadoop-2.7.5/hadoopDatas/tempDatas mkdir -p /export/servers/hadoop-2.7.5/hadoopDatas/namenodeDatas mkdir -p /export/servers/hadoop-2.7.5/hadoopDatas/namenodeDatas2 mkdir -p /export/servers/hadoop-2.7.5/hadoopDatas/datanodeDatas mkdir -p /export/servers/hadoop-2.7.5/hadoopDatas/datanodeDatas2 mkdir -p /export/servers/hadoop-2.7.5/hadoopDatas/nn/edits mkdir -p /export/servers/hadoop-2.7.5/hadoopDatas/snn/name mkdir -p /export/servers/hadoop-2.7.5/hadoopDatas/dfs/snn/edits
安装包分发:
1 2 scp -r hadoop-2.7.5 node02:$PWD scp -r hadoop-2.7.5 node03:$PWD
配置Hadoop环境变量
1 2 3 4 vim /etc/profile export HADOOP_HOME=/export/servers/hadoop-2.7.5 export PATH=:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH source /etc/profile
第四步:启动集群 要启动 Hadoop 集群,需要启动 HDFS 和 YARN 两个模块。 注意: 首次启动 HDFS 时,必须对其进行格式化操作。 本质上是一些清理和 准备工作,因为此时的 HDFS 在物理上还是不存在的。
hdfs namenode -format 或者 hadoop namenode –format
准备启动
第一台机器执行以下命令
1 2 3 4 5 cd /export/servers/hadoop-2.7.5/ bin/hdfs namenode -format sbin/start-dfs.sh sbin/start-yarn.sh sbin/mr-jobhistory-daemon.sh start historyserver
三个端口查看界面
http://node01:50070/explorer.html#/ 查看hdfs
http://node01:8088/cluster 查看yarn集群
http://node01:19888/jobhistory 查看历史完成的任务