0°

Hadoop入门

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

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!