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