六阶段大数据--day02--hadoop入门

一 Hadoop介绍

1 hadoop的定义

hadoop是一个分布式存储和分布式计算的框架。是围绕数据分析为核心的框架.

分布式存储即,数据库中一份数据复制多份存储(冗余存储)

2 hadoop的核心组件

  • HDFS:分布式存储组件
  • MapReduce:分布式计算组件
  • Yarn:资源调度管理器

3 hadoop的介绍及发展历史

  1. Hadoop最早起源于Nutch。Nutch的设计目标是构建一个大型的全网搜索引擎,包括网页抓取、索引、查询等功能,但随着抓取网页数量的增加,遇到了严重的可扩展性问题——如何解决数十亿网页的存储和索引问题。

  2. 2003年、2004年谷歌发表的两篇论文为该问题提供了可行的解决方案。 ——分布式文件系统(GFS),可用于处理海量网页的存储 ——分布式计算框架MAPREDUCE,可用于处理海量网页的索引计算问题。

  3. Nutch的开发人员完成了相应的开源实现HDFS和MAPREDUCE,并从Nutch中剥离成为独立项目HADOOP,到2008年1月,HADOOP成为Apache顶级项目(同年,cloudera公司成立),迎来了它的快速发展期。 狭义上来说,hadoop就是单独指代hadoop这个软件, 广义上来说,hadoop指代大数据的一个生态圈,包括很多其他的软件。

4 hadoop的历史版本介绍

  • 0.x系列版本:hadoop当中最早的一个开源版本,在此基础上演变而来的1.x以及2.x的版本
  • 1.x版本系列:hadoop版本当中的第二代开源版本,主要修复0.x版本的一些bug等
  • 2.x版本系列:架构产生重大变化,引入了yarn平台等许多新特性
  • 3.x版本系列:基于2.x的版本进行多层优化(新特性),主要的是改变MapReduce的数据计算方式。

六阶段大数据--day02--hadoop入门_第1张图片

5 hadoop2.x架构模型

六阶段大数据--day02--hadoop入门_第2张图片

文件系统核心模块

  • NameNode:集群当中的主节点,主要用于管理集群当中的各种元数据
  • secondaryNameNode:主要能用于hadoop当中元数据信息的辅助管理
  • DataNode:集群当中的从节点,主要用于存储集群当中的各种数据

数据计算核心模块:

  • ResourceManager:接收用户的计算请求任务,并负责集群的资源分配
  • NodeManager:负责执行主节点APPmaster分配的任务

六阶段大数据--day02--hadoop入门_第3张图片

6 Hadoop 的安装有三种方式

1)  单机模式:直接解压,只支持MapReduce的测试,不支持HDFS存储,一般不用。

2) 伪分布式模式:单机通过多进程模拟集群方式安装,支持Hadoop所有功能。

  • 优点:功能完整。
  • 缺点:性能低下。学习测试用。

3) 完全分布式模式:集群方式安装,生产级别。

  • HA:高可用。

7 伪分布式部署

需要环境:

JDK,JAVA_HOME,配置hosts,关闭防火墙,配置免密登录等。

注意:我们只将其安装在hadoop01节点上。

7.1 进入目录

cd /opt/servers

7.2 上传安装包并解压

六阶段大数据--day02--hadoop入门_第4张图片

tar -xvzf hadoop-2.7.7.tar.gz -C ../servers/

六阶段大数据--day02--hadoop入门_第5张图片

 解压后查看hadoop内的文件目录:六阶段大数据--day02--hadoop入门_第6张图片

 bin目录里的内容:六阶段大数据--day02--hadoop入门_第7张图片

 sbin目录里的内容:

六阶段大数据--day02--hadoop入门_第8张图片

 六阶段大数据--day02--hadoop入门_第9张图片

7.3 修改配置文件

位置:/opt/servers/hadoop-2.7.7/etc/hadoop

1.修改hadoop-env.sh

vim /opt/servers/hadoop-2.7.7/etc/hadoop/hadoop-env.sh

修改

export JAVA_HOME=/opt/servers/jdk1.8.0_65
export HADOOP_CONF_DIR=/opt/servers/hadoop-2.7.7/etc/hadoop

另连接hadoop01窗口,查找jdk和hadoop全路径

六阶段大数据--day02--hadoop入门_第10张图片

粘贴到hadoop-env.sh文件中保存并退出:

六阶段大数据--day02--hadoop入门_第11张图片

2.修改 core-site.xml

vim /opt/servers/hadoop-2.7.7/etc/hadoop/core-site.xml

增加namenode配置、文件存储位置配置:粘贴代码部分到标签内


 

 
fs.default.name
 
hdfs://hadoop01:8020
 
 
 

 
  
 
hadoop.tmp.dir
 
/opt/servers/hadoop-2.7.7/tmp
 

3.修改 hdfs-site.xml

vim /opt/servers/hadoop-2.7.7/etc/hadoop/hdfs-site.xml
  • 配置包括自身在内的备份副本数量到标签内


 

 

 
dfs.replication
 
1
 

 

 

 
dfs.permissions
 
false
 

4.修改 mapred-site.xml

说明:在/opt/servers/hadoop-2.7.7/etc/hadoop的目录下,只有一个mapred-site.xml.template文件,复制一个。

cp mapred-site.xml.template mapred-site.xml
vim /opt/servers/hadoop-2.7.7/etc/hadoop/mapred-site.xml

配置mapreduce运行在yarn上:粘贴高亮部分到标签内

 
 

 
mapreduce.framework.name
 
yarn
 

5.修改 yarn-site.xml

vim /opt/servers/hadoop-2.7.7/etc/hadoop/yarn-site.xml
  • 配置:粘贴高亮部分到标签内


 

 
yarn.resourcemanager.hostname
 
hadoop01
 

 

 

 
yarn.nodemanager.aux-services
 
mapreduce_shuffle
 

6.修改slaves

vim /opt/servers/hadoop-2.7.7/etc/hadoop/slaves

修改

hadoop01

7.配置hadoop的环境变量

vim /etc/profile
export HADOOP_HOME=/opt/servers/hadoop-2.7.7
export PATH=:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

配置完成之后生效

source /etc/profile

环境变量配置完成,测试环境变量是否生效

echo $HADOOP_HOME

7.4 启动

1.初始化

hdfs namenode -format

2.启动

start-all.sh

3.停止

stop-all.sh

4.测试

jps

5.停止服务

stop-all.sh

6.访问浏览器

windows的浏览器中访问hadoop01:50070

安装成功!

7.如果没有安装成功

如果没有成功(进程数不够)

1).stop-all.sh 停掉hadoop所有进程

2).删掉hadoop2.7.7下的tmp文件

3).hdfs namenode -format 重新初始化(出现successfully证明成功),如果配置文件报错,安装报错信息修改相应位置后重新执行第二步。

4).start-all.sh 启动hadoop

8  完全分布式部署

安装环境服务部署规划

服务器IP 192.168.65.101 192.168.65.102 192.168.65.103
NameNode
HDFS Secondary NameNode
DataNode DataNode DataNode
YARN ResourceManager
NodeManager NodeManager NodeManager
MapReduce JobHistoryServer

先在第一台机器hadoop01进行部署

注意:如果已安装伪分布模式,先删除格式化后生成的数据文件,其他请略过

rm -rf /opt/servers/hadoop-2.7.7/tmp

8.1 进入目录

cd /opt/servers

8.2 上传安装包并解压

tar -xvzf hadoop-2.7.7.tar.gz -C ../servers/

8.3 修改配置文件

位置:/opt/servers/hadoop-2.7.7/etc/hadoop

1.修改hadoop-env.sh

vim /opt/servers/hadoop-2.7.7/etc/hadoop/hadoop-env.sh

修改

export JAVA_HOME=/opt/servers/jdk1.8.0_65
export HADOOP_CONF_DIR=/opt/servers/hadoop-2.7.7/etc/hadoop

2.修改 core-site.xml

vim /opt/servers/hadoop-2.7.7/etc/hadoop/core-site.xml

增加namenode配置、文件存储位置配置:粘贴代码部分到标签内


 

 
fs.default.name
 
hdfs://hadoop01:8020
 
 
 

 
  
 
hadoop.tmp.dir
 
/opt/servers/hadoop-2.7.7/tmp
 

3.修改 hdfs-site.xml

vim /opt/servers/hadoop-2.7.7/etc/hadoop/hdfs-site.xml
  • 配置包括自身在内的备份副本数量到标签内


 

 

 
dfs.replication
 
2
 

 

 

 
dfs.permissions
 
false
 

4.修改 mapred-site.xml

说明:在/opt/servers/hadoop-2.7.7/etc/hadoop的目录下,只有一个mapred-site.xml.template文件,复制一个。

cp mapred-site.xml.template mapred-site.xml
vim /opt/servers/hadoop-2.7.7/etc/hadoop/mapred-site.xml

配置mapreduce运行在yarn上:粘贴高亮部分到标签内

 
 

 
mapreduce.framework.name
 
yarn
 

5.修改 yarn-site.xml

vim /opt/servers/hadoop-2.7.7/etc/hadoop/yarn-site.xml
  • 配置:粘贴高亮部分到标签内


 

 
yarn.resourcemanager.hostname
 
hadoop01
 

 

 

 
yarn.nodemanager.aux-services
 
mapreduce_shuffle
 

6.修改slaves

vim /opt/servers/hadoop-2.7.7/etc/hadoop/slaves

修改

hadoop01
hadoop02
hadoop03

7.配置hadoop的环境变量

vim /etc/profile
配置:
export HADOOP_HOME=/opt/servers/hadoop-2.7.7
export PATH=:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

配置完成之后生效

source /etc/profile

环境变量配置完成,测试环境变量是否生效

echo $HADOOP_HOME

8.分发文件到hadoop02、hadoop03服务器

cd /opt/servers/
scp -r hadoop-2.7.7/ hadoop02:$PWD
scp -r hadoop-2.7.7/ hadoop03:$PWD

9.hadoop02、hadoop03服务器配置hadoop的环境变量

vim /etc/profile
配置:
export HADOOP_HOME=/opt/servers/hadoop-2.7.7
export PATH=:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

配置完成之后生效

source /etc/profile

环境变量配置完成,测试环境变量是否生效

echo $HADOOP_HOME

8.4 启动

1.初始化

hdfs namenode -format

2.启动

start-all.sh

3.停止

stop-all.sh

4.测试

jps

5.停止服务

stop-all.sh

6.访问浏览器

windows的浏览器中访问

hdfs集群访问地址:

http://hadoop01:50070/

yarn集群访问地址:

http://hadoop01:8088/

安装成功!

补充:可以按照组件启动服务

start-dfs.sh
start-yarn.sh

也可以单独启动一个服务

在主节点上使用以下命令启动 HDFS NameNode:
hadoop-daemon.sh start namenode 
在每个从节点上使用以下命令启动 HDFS DataNode: 
hadoop-daemon.sh start datanode 
在主节点上使用以下命令启动 YARN ResourceManager: 
yarn-daemon.sh  start resourcemanager 
在每个从节点上使用以下命令启动 YARN nodemanager: 
yarn-daemon.sh start nodemanager 

9.hadoop集群初体验

9.1 HDFS 使用初体验

从Linux 本地上传一个文本文件到 hdfs 的/test/input 目录下

hadoop fs -mkdir -p /test/input

hadoop fs -put /root/install.log /test/input

9.2 mapreduce程序初体验

在 Hadoop 安装包的

hadoop2.7.7/share/hadoop/mapreduce 下有官方自带的mapreduce 程序。我们可以使用如下的命令进行运行测试。

示例程序jar:

 hadoop-mapreduce-examples-2.7.7.jar

计算圆周率:

hadoop jar /opt/servers/hadoop-2.7.7/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar pi 2 5

关于圆周率的估算,感兴趣的可以查询资料 Monte Carlo 方法来计算 Pi 值。

10 HDFS入门介绍

10.1 HDFS 介绍

HDFS 是 Hadoop Distribute File System 的简称,意为:Hadoop 分布式文件系统。是 Hadoop 核心组件之一,作为最底层的分布式存储服务而存在。

分布式文件系统解决的问题就是大数据存储。它们是横跨在多台计算机上的存储系统。分布式文件系统在大数据时代有着广泛的应用前景,它们为存储和处理超大规模数据提供所需的扩展能力。

10.2 HDFS的特性

首先,它是一个文件系统,用于存储文件,通过统一的命名空间目录树来定位文件;

其次,它是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色。

1. master/slave 架构

HDFS 采用 master/slave 架构。一般一个 HDFS 集群是有一个 Namenode 和一定数目的Datanode 组成。Namenode 是 HDFS 集群主节点,Datanode 是 HDFS 集群从节点,两种角色各司其职,共同协调完成分布式的文件存储服务。

2. 分块存储

HDFS 中的文件在物理上是分块存储(block)的,块的大小可以通过配置参数来规定,默认大小在 hadoop2.x 版本中是 128M。

3. 名字空间(NameSpace)

HDFS 支持传统的层次型文件组织结构。用户或者应用程序可以创建目录,然后将文件保存在这些目录里。文件系统名字空间的层次结构和大多数现有的文件系统类似:用户可以创建、删除、移动或重命名文件。

Namenode 负责维护文件系统的名字空间,任何对文件系统名字空间或属性的修改都将被Namenode 记录下来。

HDFS 会给客户端提供一个统一的抽象目录树,客户端通过路径来访问文件,形如:hdfs://namenode:port/dir-a/dir-b/dir-c/file.data。

4. namenode 元数据管理

我们把目录结构及文件分块位置信息叫做元数据。Namenode 负责维护整个hdfs文件系统的目录树结构,以及每一个文件所对应的 block 块信息(block 的id,及所在的datanode 服务器)。

5. Datanode 数据存储

文件的各个 block 的具体存储管理由 datanode 节点承担。每一个 block 都可以在多个datanode 上。Datanode 需要定时向 Namenode 汇报自己持有的 block信息。 存储多个副本(副本数量也可以通过参数设置 dfs.replication,默认是 3)。

6. 副本机制

为了容错,文件的所有 block 都会有副本。每个文件的 block 大小和副本系数都是可配置的。应用程序可以指定某个文件的副本数目。副本系数可以在文件创建的时候指定,也可以在之后改变。

7. 一次写入,多次读出

HDFS 是设计成适应一次写入,多次读出的场景,且不支持文件的修改。

正因为如此,HDFS 适合用来做大数据分析的底层存储服务,并不适合用来做.网盘等应用,因为,修改不方便,延迟大,网络开销大,成本太高。

                

你可能感兴趣的:(六阶段大数据,hadoop,分布式)