hadoop核心组件介绍、HDFS 分布式文件系统

一、大数据与Hadoop

1.1 大数据简介

1.1.1 大数据的定义

– 大数据由巨型数据集组成,这些数据集大小常超出人
类在可接受时间下的收集、使用、管理和处理能力。

1.1.2 大数据能做什么

– 把数据集合幵后进行分析可得出许多额外的信息和数
据关系性,可用来察觉商业趋势、判定研究质量、避
免疾病扩散、打击犯罪或测定即时交通路况等;这样
的用途正是大型数据集盛行的原因

1.2 什么是Hadoop

– Hadoop 是一种分析和处理海量数据的软件平台
– Hadoop 是一款开源软件,使用 JAVA 开发
– Hadoop 可以提供一个分布式基础架构

二、Hadoop组件

2.1 Hadoop 核心组件

2.1.1  HDFS
– 分布式文件系统
2.1.2 MapReduce
– 分布式计算框架
2.1.3 Yarn
– 集群资源管理系统

2.2 Hadoop 生态系统

2.3 Hadoop 常用组件

• HDFS(Hadoop分布式文件系统)
• Mapreduce(分布式计算框架)
• yarn(集群资源管理系统)
• Zookeeper(分布式协调服务)
• kafka (分布式的消息系统)
• Hbase(分布式列存数据库)
• Hive(基于Hadoop的数据仓库)
• Sqoop(数据同步工具)
• Pig(基于Hadoop的数据流系统)
• Mahout(数据挖掘算法库)
• Flume(日志收集工具)

三、Hadoop核心组件

3.1 HDFS 结构

HDFS是Hadoop体系中数据存储管理的基础。它是一个高度容错的系统,用于在低成本的通用硬件上运行。

HDFS的工作原理:

client将数据进行分片,他会向namenode发出请求询问数据应该存放到哪些datanode结点上,namenode会告诉HDFS client分片数据的存放位置,HDFS Client就会与DataNode进行通信,把数据存放到响应的dataNode结点上。

3.1.1 HDFS 角色及概念

角色和概念
– Client
– Namenode
– Secondarynode
– Datanode

1. Client
– 切分文件
– 访问HDFS
– 不NameNode交互,获取文件位置信息
– 不DataNode交互,读取和写入数据。

2. NameNode
– Master节点,管理HDFS的名称空间和数据块映射信
息,配置副本策略,处理所有客户端请求。

3. Secondary NameNode
– 定期合并 fsimage 和fsedits,推送给NameNode
– 紧急情况下,可辅劣恢复NameNode

4. DataNode
– 数据存储节点,存储实际的数据
– 汇报存储信息给NameNode

5.Block
– 每块缺省64MB大小
– 每块可以多个副本

3.2 MapReduce 结构

MapReduce是一个分布式计算框架

角色和概念
– JobTracker
– TaskTracker
– Map Task
– Reducer Task

1. JobTracker
– Master节点,只有一个
– 管理所有作业
– 作业/仸务的监控、错误处理等
– 将任务分解成一系列任务,分派给TaskTracker。

2. TaskTracker
– Slave节点,一般是多台
– 运行Map Task和Reduce Task
– 幵不JobTracker交互,汇报仸务状态。

3. Map Task:解析每条数据记录,传递给用户编写的
map(),幵执行,将输出结果写入本地磁盘(如果为
map-only作业,直接写入HDFS)。

4. Reducer Task:从Map Task的执行结果中,远程读
取输入数据,对数据进行排序,将数据按照分组传递
给用户编写的reduce凼数执行。

3.3 Yarn 结构

Yarn 是 Hadoop 的一个通用的资源管理系统

3.3.1 Yarn 角色

– Resourcemanager
– Nodemanager
– ApplicationMaster
– Container
– Client

1. ResourceManager
– 处理客户端请求
– 启动 / 监控 ApplicationMaster
– 监控 NodeManager
– 资源分配不调度

2. NodeManager
– 单个节点上的资源管理
– 处理来自 ResourceManager 的命令
– 处理来自 ApplicationMaster 的命令

3. Container
– 对任务运行环境的抽象,封装了 CPU 、内存等
– 多维资源以及环境变量、启动命令等任务运行相关的
信息资源分配与调度

4.ApplicationMaster
– 数据切分
– 为应用程序申请资源,幵分配给内部任务
– 任务监控不容错

5.Client
– 用户与YARN 交互的客户端程序
– 提交应用程序、监控应用程序状态,杀死应用程序等

3.3.2 YARN 的核心思想

将 JobTracker 和 TaskTacker 进行分离,它由下面
几大构成组件:
– ResourceManager 一个全局的资源管理器
– NodeManager 每个节点(RM)代理
– ApplicationMaster 表示每个应用
– 每一个 ApplicationMaster 有多个 Container 在NodeManager 上运行

四、Hadoop 安装配置

4.1 Hadoop 的部署模式有三种

– 单机
– 伪分布式
– 完全分布式

4.2 Hadoop 单机模式安装配置

1、获取软件
http://hadoop.apache.org

点击此处下载hadoop.rar
2、安装配置 java 环境,安装 jps 工具
安装 Openjdk 和 openjdk-devel

~] # yum -y install java-1.8.0-openjdk  java-1.8.0-openjdk-devel
3、设置环境变量,启劢运行

~]# rpm -ql java-1.8.0-openjdk

~] # vim hadoop-env.sh
JAVA_HOME=“/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.131-11.b12.el7.x86_64/jre/”

4.hadoop 的功能
– 测试 --- 统计词频
cd /usr/local/hadoop
mkdir input
cp *.txt input/
./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-
mapreduce-examples-2.7.3.jar wordcount input output

4.3 Hadoop 伪分布式

1. 伪分布式
– 伪分布式的安装和完全分布式类似,但区别是所有角
色安装在一台机器上,使用本地磁盘,一般生产环境
都会使用完全分布式,伪分布式一般用来学习和测试
方面的功能
2. 伪分布式的配置和完全分布式配置类似

3. 文件格式

3.1 Hadoop-env.sh
JAVA_HOME
HADOOP_CONF_DIR

3.2 Xml 文件配置格式
<property>
<name>关键字</name>
<value>变量值</value>
<description> 描述 </description>
</property>

4.4 HDFS 分布式文件系统

4.4.1 系统规划

4.4.2 基础环境准备

1. 新开启3台虚拟机
2. 禁用 selinux
SELINUX=disabled
3. 禁用 firewalld
systemctl stop firewalld
systemctl mask firewalld
4. 安装 java-1.8.0-openjdk-devel
yum install -y java-1.8.0-openjdk-devel

5.所有主机能相互 ping 通 (配置 /etc/hosts)

6.NN1: 能 ssh 免密登录所有集群主机,包括自己(不能提示输入 yes)
~] # vim  /root/ssh/ssh_config
StrictHostKeyChecking no

4.4.3 HDFS 完全分布式系统配置

– 环境配置文件 hadoop-env.sh
– 核心配置文件 core-site.xml
– HDFS配置文件 hdfs-site.xml
– 节点配置文件   slaves

1.环境配置文件 hadoop-env.sh  【NN01】

– openjdk 的安装目录
– JAVA_HOME

~] # vim hadoop-env.sh
JAVA_HOME=“/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.131-11.b12.el7.x86_64/jre/”

– hadoop 配置文件的存放目录
– HADOOP_CONF_DIR

~] # vim hadoop-env.sh

export HADOOP_CONF_DIR=${HADOOP_CONF_DIR:-"/usr/local/hadoop/etc/hadoop"}

2.核心配置文件 core-site.xml
– fs.defaultFS 文件系统配置参数
– hadoop.tmp.dir 数据目录配置参数

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://nn01:9000</value>

   </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/var/hadoop</value>
    </property>
</configuration>

   2.1 ALL: 所有主机上创建文件夹 /var/hadoop

3.NN1: 配置 hdfs-site.xml
<configuration>
    <property>
        <name>dfs.namenode.http-address</name>    //namenode 地址声明
        <value>nn01:50070</value>
    </property>
    <property>
        <name>dfs.namenode.secondary.http-address</name>   //secondarynamenode 地址声明
        <value>nn01:50090</value>
    </property>
    <property>
        <name>dfs.replication</name>     //文件冗余仹数
        <value>2</value>
    </property>
</configuration>

4. NN1: 配置 slaves,配置datanode节点

hadoop]# vim slaves

node1
node2
node3

5. ALL: 同步配置到所有主机

#!/bin/bash
function syncfile(){
    for host in $@;do
        rsync -az --delete /usr/local/hadoop/etc ${host}:/usr/local/hadoop/  &
        rsync /etc/hosts ${host}:/etc/hosts
    done
    wait
}

if (( $# > 0 ));then
   syncfile $@
else
   echo "${0} host1 host2 host3 ... ... host(N)"
fi

~]# ./rsyncConfig.sh node{1..3}

6.NN01: 格式化 namenode
./bin/hdfs namenode -format

7.NN01: 启动集群
./sbin/start-dfs.sh
停止集群可以使用 ./sbin/stop-dfs.sh

8.ALL: 验证角色 jps

9.NN01: 验证集群是否组建成功
./bin/hdfs dfsadmin -report

猜你喜欢

转载自blog.csdn.net/qq_36441027/article/details/82228943
今日推荐