大数据之Hadoop3简单入门(一)(通俗易懂)

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

目录

一. 大数据基础概论

1.1 何为大数据

2.1 大数据特点4V

2.1.1 Volume大量

2.2.2 Velocity高速

2.2.3 Varity多样

2.2.4 Value低价值密度

二. hadoop入门概述

2.1 什么是hadoop

2.1.1 概念

2.1.2 hadoop优势

2.1.3 hadoop不同版本区别

2.2  HDFS架构概述

2.3  Yarn架构概述

2.4 MapReduce架构概述

2.5 三者关系

三. Hadoop运行环境搭建

3.1 固定IP地址与主机名称配置

3.2 增加用户给用户添加root权限

3.3 克隆虚拟机

3.4 在Hadoop102上安装JDK

3.5 在Hadoop102上安装hadoop3.1.3

四. Hadoop运行模式

4.1 运行模式

4.2 完全分布式的搭建重点

4.2.1 编写集群分发脚本xsync

4.2.2 SSH免密登录

4.2.3 入门集群配置

4.2.4 群起集群

附件大数据部门组织结构图

附件大数据生态体系图

附件推荐系统项目框架图


一. 大数据基础概论

1.1 何为大数据

大数据Big Data是解决对海量数据进行采集存储与分析计算的问题。

大数据存储单位顺序bitByteKBMBGB TB PB EB ZB YB BB NB DB每个单位之间都是1024的换算。

对于大数据的例子最现实简单的就是在某音假如你喜欢看美女大数据就会记住你这个爱好然后就会精准推荐美女给你。

大数据的应用场景还有人工智能无人驾驶。虚拟现实远程医疗物联网等。

2.1 大数据特点4V

2.1.1 Volume大量

如何是大量的看这些数据截止2021年以前人类的所有印刷总的数据量大约是200PB全人类说过话的数据量大约为5EB有些大企业的数据量达到了EB量级

2.2.2 Velocity高速

在海量的数据面前处理数据的效率就是企业的生命。比如2020年96秒天猫天猫双十一交易额超过100亿简简单单先完成一个小目标。

2.2.3 Varity多样

数据多样性可以分为结构化数据和非结构化数据。相比数据库和文本等结构化数据存储来说对非结构化数据例如网络日志、音频、视频、图片、地理位置信息等这些多类型数据的处理能力提出了更高要求。

2.2.4 Value低价值密度

价值密度的高低与数据总量的大小成反比比如在一天监控视频中我们只关心某一分钟的操作因此如何快速对有价值数据“提纯”成为目前大数据背景上有待解决的难题。

二. hadoop入门概述

2.1 什么是hadoop

2.1.1 概念

hadoop是一个分布式系统基础架构主要解决数据存储与海量分析计算的问题广泛来说hadoop通常指的是Hadoop生态圈

2.1.2 hadoop优势

主要分为4个方面。

  1. 高可靠性hadoop底层维护多个数据副本即使当hadoop某个计算元素或存储出现故障也不会导致数据丢失。
  2. 高扩展性集群间分配任务数据可方便扩展数以千计的节点。就是动态的增加服务器的节点保证每个节点正常运行不会宕机。
  3. 高效性在MapReduce的思想下hadoop是并行工作的。可以加快任务处理速度。
  4. 高容错性能够将失败的任务重新分配。

2.1.3 hadoop不同版本区别

对于hadoop系列主要有1.x2.x3.x的版本。组成结构也是不同的对于1.x组成主要是MapReduce(计算+资源调度)HDFS(数据存储)Common(辅助工具)如下图

对于2.x与3.x组成主要是MapReduce(计算)Yarn(资源调度)HDFS(数据存储)Common(辅助工具)如下图

2.2  HDFS架构概述

Hadoop Distributed File System简称HDFS是一个分布式文件系统。对于HDFS主要有以下几个概念。

1. NameNode(nn):存储文件的元数据比如文件名目录结构等以及每个文件的块列表与块所在的DataNode表示数据存在什么位置。

2. DataNode(dn):在本地文件系统存储文件块数据以及块数据的校验和表示具体的存储数据。

3. Secondary NameNode(2nn):每隔一段时间对NameNode元数据备份。防止NameNode宕机后集群瘫痪。

2.3  Yarn架构概述

Yet Another Resource Negotiator简称YARN 另一种资源协调者是Hadoop的资源管理器主要管理CPU与内存。有以下几个概念

1. ResourceManager(RM): 整个集群资源CPU内存的老大。

2. NodeManager(NM): 单个节点服务器资源老大。

3. ApplicationMaster(AM):单个任务运行的老大。

4. Container: 容器相当于一台独立的服务器里面封装了任务运行所需要的资源如内存CPU磁盘网络等。

2.4 MapReduce架构概述

MapReduce将计算过程分两个阶段Map与ReduceMap阶段用于并行处理输入数据Reduce阶段对Map结果进行汇总。

2.5 三者关系

上面将三者MapReduceHDFSYarn拆出进行了一个说明如下图所示下面将三者进行结合起来说明一下看看Hadoop到底是如何工作的。

假设现需在100T数据中找找出某一时段视频数据这时YARN接收到客户端请求后每个Hadoop节点NM会向RM(上述已提到)申请资源。

开启子任务后在HDFS文件系统中找到匹配的数据这一阶段由MapReduce完成计算过后将数据存储在Hadoop中同时2NN也会做出相应的备份。

三. Hadoop运行环境搭建

搭建Hadoop基本的环境前需要下载Vmware虚拟机与Centos7镜像(此操作请自行完成)

3.1 固定IP地址与主机名称配置

对于NAT网络环境的改变的情况需要将每台虚拟机节点的IP地址进行固定如下操作

首先找到Vmware中的虚拟网络编辑器打开后进行上图的操作后出现下图

按照步骤将子网IP与子网掩码修改成上图也可以是别的IP地址只要和别的IP不冲突就可以确定后按照步骤打开本机的【更改适配器选项】进行下图操作

双击3打开修改对应的参数如下

完成上述操作之后回到虚拟机打开终端输入以下指令进入网络配置文件

vim /etc/sysconfig/network-scripts/ifcfg-ens33
HWADDR=00:0C:29:49:34:70
#网络类型默认
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
#IP配置这里改为static为静态配置
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=$'\746\634\611\747\672\677\750\677\636\746\616\645 1'
UUID=537cc596-85c7-3c9a-a1c8-96f79f77be26
ONBOOT=yes
AUTOCONNECT_PRIORITY=-999

#IP
IPADDR=192.168.10.102
#网关
GATEWAY=192.168.10.2
#域名解析器
DNS1=192.168.10.2

注意有的打开此命令后会出现空的目录那是因为每个人的机子上的文件不一定是叫做ifcfg-ens33这个名字可能是叫ifcfg-xxx(xxx表示其他文件名称)此时需要在network-scripts文件夹下建一个ifcfg-ens33然后将ifcfg-xxx的配置拷贝到ifcfg-ens33中然后加入配置IP网关与域名解析器。然后重新执行ifconfig命令后看ens33的本地IP是否和配置文件中的IP一致。

修改主机名称在/etc/hostname下修改即可。

记住执行上述操作后需要重启reboot配置才可生效。

3.2 增加用户给用户添加root权限

增加用户

useradd zhangsan

增加root权限

执行命令vim /etc/sudoers修改sudoers文件,在最后一行加入。

root    ALL=(ALL)       ALL

%wheel  ALL=(ALL)       ALL

zhangsan ALL=(ALL)  NOPASSWD:ALL

为啥设置在最后一行%wheel表示任何成员都在此组下若设值在最后优先级较高导致之后配置的用户不会生效。

3.3 克隆虚拟机

虚拟机的克隆操作也很简单选中要克隆的虚拟机点击克隆。

一直下一步值得注意的是到克隆类型这一步选创建完整克隆然后下一步命名虚拟机选择存放位置即可。

按照此步骤克隆出三台虚拟机并根据之前的3.1步骤配置Hadoop102,Hadoop103,Hadoop104三台。

3.4 在Hadoop102上安装JDK

可以借助Xftp工具将JavaJDK从本地上传到虚拟机的文件夹中然后进行安装安装时需要卸载原本的JDK这里选择JDK1.8进行安装。

将JDK1.8进行解压操作

tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/module/

配置环境变量在/etc/profile.d自定义一个配置文件my_env.sh

vim /etc/profile.d/my_env.sh

添加JAVA环境变量JAVA_HOME配置JDK路径PATH配置bin路径即可。

#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_212
export PATH=$PATH:$JAVA_HOME/bin

自己建立的配置文件需要执行source /etc/profile才可生效

3.5 在Hadoop102上安装hadoop3.1.3

使用3.4同样的方法解压hadoop3.1.3之后在my_env.sh文件中添加对应的环境变量不要忘记执行source /etc/profile.

#HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

四. Hadoop运行模式

4.1 运行模式

Hadoop运行模式主要分为三种本地伪分布式完全分布式。常用的还是完全分布式。

关于本地运行模式看一个案例统计文本中单词出现的次数。

随便建一个文件写入几个单词来到hadoop的安装根路径下执行主要前后需要指定输入与输出的路径不然会抛出异常。

hadoop jar share /hadoop/mapreduce/hadoop-mapreduce-examples-3.1.1.jar wordcount wcinput/ wcoutput/

查看输出路径wcoutput/下的part-r-00000文件就是统计出的单词数量。

4.2 完全分布式的搭建重点

上面已经将JDK与Hadoop环境安装到Hadoop102服务器上现在需要通过Hadoop将两者复制到Hadoop103Hadoop104上使用集群分发脚本xsync来完成。

4.2.1 编写集群分发脚本xsync

1. scp(secure copy)安全拷贝

scp用于实现服务器之间数据拷贝基础语法如下

scp -r 所在服务器文件名路径 目标服务器下的文件夹username@xxxx:/opt/

将hadoop102上的JDK拷贝到hadoop103上执行此命令之前103服务器下的moudle文件必须有访问权限并且还要将/opt/module/目录修改为tongbing:tongbing

sudo chown tongbing:tongbing -R /opt/moudle
scp -r jdk1.8.0_212/ tongbing@hadoop103:/opt/module/

hadoop是同理这里不在赘述。

scp的强大之处不仅仅如此例如可以实现在103服务器进行操作将102服务器文件复制到104服务器上。实现你就是我我就是你。

scp -r username@hadoop102:/opt/module/* username@hadoop104:/opt/module/

2. rsync远程同步工具

用于备份与镜像特点是速度快避免复制相同内容和支持符合链接的优点。

rsync与scp的区别就是rsync文件复制比后者快rsync只对差异的文件做更新scp是把所有的文件复制过去。

语法:

rsync -av 所在服务器文件名路径 目标服务器下的文件夹username@xxxx:/opt/

-a表示归档拷贝-v表示显示复制过程。

操作将102号机下的wcinpt文件夹删除后用103号机进行同步。

rm -rf wcinput/

rsync -av hadoop-3.1.3/ tongbing@hadoop102:/opt/module/hadoop-3.1.3/

3. xsync集群分发脚本

对每个集群中所修改的文件进行一个一个路径的配置开发过程中耗时是很大的现在的需求就是循环复制文件到所有节点的相同目录下做到一个节点服务器文件的修改可以应用到整个集群的节点服务器上。

注意xsync是我们自己所定义的要想全局使用还需配置它的环境变量并且将写的脚本文件放在当前用户的bin目录下即可。

执行echo $PATH看一下是否有/home/tongbing/bin若没有到之前的my_env.sh文件配置。

[tongbing@hadoop102 hadoop-3.1.3]$ echo $PATH
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/module/jdk1.8.0_212/bin:
/opt/module/hadoop-3.1.3/bin:/opt/module/hadoop-3.1.3/sbin:
/home/tongbing/bin:/home/tongbing/.local/bin:/home/tongbing/bin

/home/tongbing/bin下创建的脚本文件xsync无需带sh后缀内容

#!/bin/bash

#1. 判断参数个数
if [ $# -lt 1 ]
then
    echo Not Enough Arguement!
    exit;
fi

#2. 遍历集群所有机器
for host in hadoop102 hadoop103 hadoop104
do
    echo ====================  $host  ====================
    #3. 遍历所有目录挨个发送

    for file in $@
    do
        #4. 判断文件是否存在
        if [ -e $file ]
            then
                #5. 获取父目录
                pdir=$(cd -P $(dirname $file); pwd)

                #6. 获取当前文件的名称
                fname=$(basename $file)
                ssh $host "mkdir -p $pdir"
                rsync -av $pdir/$fname $host:$pdir
            else
                echo $file does not exists!
        fi
    done
done

完成上步操作之后给它赋予可执行的权限

chmod +x xsync

测试一下将102机的某个文件删除然后同步到103,104号机如下图操作。

4.2.2 SSH免密登录

我们可以使用ssh hostname(服务器名称)来访问其它服务器此时你需要输入密码。这样做会很繁琐实现无密登录就十分方便。

实现原理就是本地服务器生成一对公钥与私钥私钥属于自己公钥可以保存至其他服务器当需要访问其它服务器的时候只需拿出自己的私钥与其它服务器上是否有自己的公钥进行匹配即可。

使用命令在102上生成私钥与公钥这时在家目录下就会生成公钥与私钥

ssh-kengen -t rsa

将公钥拷贝到103与104上

ssh-copy-id hadoop103
ssh-copy-id hadoop104

其它节点做重复的操作即可。

4.2.3 入门集群配置

1. 集群部署规划

集群规划注意

  1. NameNode不要与SecondaryNameNode不要安装在同一台服务器上。
  2. ResourceManager也很消耗内存不要和NameNode、SecondaryNameNode配置在同一台机器上。

现在需要构建以下集群的配置

2. 配置文件说明

hadoop为我们提供了核心的配置HDFS,YARN,MapReduce的配置文件

【core-default.xml】 【hdfs-default.xml】

【yarn-default-xml】 【mapred-default.xml】

有时候默认的配置并不能满足需求所以hadoop也提供了自定义的配置文件有

code-site.xml】【hdfs-site.xml】【yarn-site.xml】【mapred-site.xml】四个配置文件存放在$HADOOP_HOME/etc/hadoop这个路径上。

3. 集群配置

核心配置文件配置core-site.xml将NameNode配置到102上

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <!-- 指定NameNode的地址 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop102:8020</value>
    </property>

    <!-- 指定hadoop数据的存储目录 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/module/hadoop-3.1.3/data</value>
    </property>
</configuration>

hdfs-site.xml文件中配置SecondaryNameNode:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
	<!-- nn web端访问地址-->
	<property>
        <name>dfs.namenode.http-address</name>
        <value>hadoop102:9870</value>
    </property>
	<!-- 2nn web端访问地址-->
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>hadoop104:9868</value>
    </property>
</configuration>

配置yarn-site.xml指定ResourceManager的地址:

<configuration>
    <!-- 指定MR走shuffle -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>

    <!-- 指定ResourceManager的地址-->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>hadoop103</value>
    </property>

    <!-- 环境变量的继承 -->
    <property>
        <name>yarn.nodemanager.env-whitelist</name>
        <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
    </property>
</configuration>

配置mapred-site.xml

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
	<!-- 指定MapReduce程序运行在Yarn上 -->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

然后使用xsync将配置同步至103,104。

4.2.4 群起集群

1. 配置workers

将集群中的所有节点连接起来需要配置hadoop文件夹下的workers注意不能有空格。配置完成之后记得节点间的同步。

hadoop102
hadoop103
hadoop104

2. 启动集群

附件大数据部门组织结构图

附件大数据生态体系图

附件推荐系统项目框架图

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: Hadoop