Hadoop入门简介及搭建
简介
Hadoop是apache旗下的用java语言实现的开源软件框架
狭义 : 是一个软件,框架
HDFS ( 分布式文件系统) 解决了海量数据的存储问题
- YARN( 资源管理 任务调度) 解决了集群中资源管理的问题
- MAPREDUCE( 分布式计算框架 ) 解决了海量数据的计算问题
广义 : hadoop是一个生态圈,是一个平台
特性
- 扩容能力 在可用的计算机集群间分配数据并完成计算任务, 可以方便的扩展到数以千计的节点中
- 成本低 通过普通廉价的机器组成服务器集群来分发以及处理数据
- 高效率 在节点之间动态并行的移动数据
- 可靠性 自动维护数据的多份复制,并且在任务失败后能自动地重新部署(redeploy)计算任务
集群规划
hadoop集群包含 HDFS集群和YARN集群 , 这两个集群逻辑上分离, 物理上通常在一起
这两个集群都是主从集群( 一主多从 )
HDFS集群
主角色: NameNode
- 从角色: DataNode
- 秘书角色(主角色的) SecondaryNameNode
YARN集群
主角色: ResourceManager
从角色: NodeManager
规划
1
2
3
4
5
6
7 1node-1 : namenode datanode | resourcemanager nodemanager
2node-2 : secondarynamenode datanode | nodemanager
3node-3 : datanode | nodemanager
4node-4 : datanode | nodemanager
5node-5 : datanode | nodemanager
6
7安装包
自己编译源码包生成安装包的好处 可以针对自己的操作系统生成最合适的包
如果源码中有些组件不适合自己的项目, 可以进行适当的修改
1
2
3
4 1hadoop-2.7.4-src.tar.gz src 源码包
2hadoop-2.7.4.tar.gz bin 安装包
3
4目录结构
1
2
3
4
5
6 1bin hadoop的基本脚本
2sbin hadoop封装的基本脚本 包括hdfs yarn的启动关闭脚本
3etc hadoop配置文件的目录
4share hadoop各个模块编译后的jar包
5
6
集群搭建
解压安装包
tar zxvf hadoop-2.7.4-with-centos-6.7.tar.gz
配置文件的修改
在主节点进行修改 scp到子节点
core hdfs yarn mapreduce 有默认配置文件, xxx-site.xml … 中没有配置的, 就使用默认配置文件中的
hadoop-env.sh 设置hadoop运行时需要的环境变量( java )
1
2
3 1export JAVA_HOME=/export/servers/jdk1.8.0_65
2
3
core-site.xml 设置hadoop的文件系统 主节点(namenode)主机 和数据存放目录
1
2
3
4
5
6
7
8
9
10
11
12 1<!-- 用于设置 Hadoop 的文件系统,由 URI 指定 -->
2<property>
3 <name>fs.defaultFS</name>
4 <value>hdfs://node-1:9000</value>
5</property>
6<!-- 配置 Hadoop 的临时目录,默认/tmp/hadoop-${user.name} -->
7<property>
8 <name>hadoop.tmp.dir</name>
9 <value>/home/hadoop/hadoop-2.4.1/tmp</value>
10</property>
11
12
hdfs-site.xml 设置hdfs副本数量和secondearynamenode(秘书节点)所在主机
1
2
3
4
5
6
7
8
9
10
11
12 1<!-- 指定 HDFS 副本的数量 -->
2<property>
3 <name>dfs.replication</name>
4 <value>2</value>
5</property>
6<!-- secondary namenode 所在主机的 ip 和端口-->
7<property>
8 <name>dfs.namenode.secondary.http-address</name>
9 <value>192.168.1.152:50090</value>
10</property>
11
12
mapred-site.xml 设置mr运行时框架
1
2
3
4
5
6
7 1<!-- 指定 mr 运行时框架,这里指定在 yarn 上,默认是 local -->
2<property>
3 <name>mapreduce.framework.name</name>
4 <value>yarn</value>
5</property>
6
7
yarn-site.xml 设置yarn的主节点( resourcemanager)的主机
1
2
3
4
5
6
7
8
9
10
11
12
13 1<!-- 指定 YARN 的老大(ResourceManager)的地址 -->
2<property>
3 <name>yarn.resourcemanager.hostname</name>
4 <value>node-1</value>
5</property>
6<!-- NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MapReduce
7程序默认值:"" -->
8<property>
9 <name>yarn.nodemanager.aux-services</name>
10 <value>mapreduce_shuffle</value>
11</property>
12
13
slaves 记录集群主机名
1
2
3
4
5
6
7
8 1<!--一般有以下两种作用:
2 一是:配合一键启动脚本如 start-dfs.sh、stop-yarn.sh 用来进行集群启动。这时候 slaves 文件里面的主机标记的就是从节点角色所在的机器。
3 二是:可以配合 hdfs-site.xml 里面 dfs.hosts 属性形成一种白名单机制。-->
4node-1
5node-2
6node-3
7
8修改系统环境变量
1
2
3
4 1export HADOOP_HOME=/export/servers/hadoop-2.7.4
2export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
3
4
集群启动
要启动 Hadoop 集群,需要启动 HDFS 和 YARN 两个集群
首次启动HDFS, 要进行格式化( 初始化 )操作 , 做一些清理和准备工作
hdfs namenode -format 或者 hadoop namenode -format
该操作在集群搭建完成后首次启动之前进行
格式化只可进行一次 如果出现多次格式化 就是使得主从之间的集群ID不一致 导致集群启动失败
一般在namenode所在机器执行一次
单节点逐个启动
- hadoop-daemon.sh start namenode|datanode|secondarynamenode
- yarn-daemon.sh start resourcemanager|nodemanager
脚本一键启动
- start-dfs.sh stop-dfs.sh
- start-yarn.sh stop.yarn.sh
- start-all.sh stop-all.sh
web-ui
hadoop启动后, 可以在浏览器通过主机+端口查看
namenode: http://namenode_host:port http://node-1:50070
resourcemanager : http://resourcemanager_host:port http://node-1:8088