Hadoop大数据平台搭建课程笔记

本课程详细介绍了Hadoop大数据平台的搭建过程,包括Linux基础操作、Hadoop环境配置、集群安装、HDFS、MapReduce、Yarn组件详解以及Zookeeper安装等内容。通过学习,学员将掌握Hadoop集群的搭建与管理,以及MapReduce编程基础。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

课程介绍

大数据基本介绍

4V特征

体量大:体量庞大

高速:数据产生速度快、存储速度快、处理速度快

多样化:数据的种类和来源多样化。结构化、非结构化、半结构化数据

价值:密度低。体量庞大,有价值的数据相对来讲比较少

Hadoop平台特点

低成本、高可靠性、高效性、可扩展性

课程所需环境

Vmware+CentOS7

注意:本门课程的Linux系统与其他课程分开

XShell、SecureCRT:连接虚拟机,进行指令操作

winSCP:在Windows和Linux之间进行文件传输

notePad++:文本编辑器

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ie0Ddj5E-1647349327846)(C:\Users\ADMINI~1\AppData\Local\Temp\1614688009667.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VMlg3n0y-1647349327847)(C:\Users\ADMINI~1\AppData\Local\Temp\1614688019165.png)]

参考资料

软件下载:

链接:https://pan.baidu.com/s/1sKVDY7ok_ke_v4VwqANCSw
提取码:doop

Linux基本操作

用户和组

root:超级用户,进入后显示#

普通用户:hadoop,进入后显示的是$

用户的切换使用指令:su 用户名

每个用户的主目录/home/用户名,root用户的主目录是/root

文件权限

r:读权限,w:写权限,x:执行权限

文件权限描述分三组:

1文件/目录创建者的权限描述

2同组其他用户的权限描述

3其他组用户的权限描述

Hadoop平台简介

Hadoop起源

来自于谷歌的三篇论文,分别出现了HDFS,MapReduce,Yarn框架,创始者是Dung Cutting

Hadoop生态圈

Hadoop核心组件

数据传输:Sqoop,Kafka,Flume

数据存储:HDFS,HBase

资源调度:Yarn

计算:MapReduce,Hive,Spark,Storm

协调者:Zookeeper

Hadoop安装

虚拟机环境准备

CentOS7安装

配置网络

目的:Linux虚拟机与Windows客户机互联互通,也就是说Linux能正常上网。

  1. 虚拟机网络连接方式:NAT

  2. 查看虚拟机的虚拟网关地址:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gkARLFXl-1647349327848)(assets/1614924659625-1614924661270.png)]

    图片中示例的网段为192.168.136.0,网关192.168.136.1

  3. 虚拟机IP地址设置

    目的:设置虚拟机为静态IP,将集群中的每台电脑IP地址固定下来

    规划:

    ​ master:192.168.136.11

    ​ slave1:192.168.136.12

    ​ slave2:192.168.136.13

    配置IP地址:

    vi指令解释:
    vi指的是编辑某个文本文件/配置文件,vi就可以打开并编辑该文件。如果该文件存在,它会直接打开;如果该文件不存在,那么该指令会创建一个同名文件,并打开,等待编辑。
    注意事项:使用vi指令打开配置文件后,如果要进行编辑,需要在键盘上敲i,进入insert(插入)模式,这时才可以对该文件进行修改。
    
    #修改网络配置文件
    vi /etc/sysconfig/network-scripts/ifcfg-ens33
    #小窍门:注意结合tab键使用。sysc+tab键就可以自动补全sysconfig
    

    完成如下配置:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UsHjM6Rh-1647349327848)(assets/1614926251701-1614926253479.png)]

    #退出vi模式
    Esc键,如果保存退出:wq,然后回车;如果不保存就退出:q;强制退出:!q,文件内容不会被保存。
    #注意都是小写字母
    
  4. 重启网络服务

    虚拟机网卡重新启动

    systemctl restart network
    

    注意:↑可以帮助大家快速找到之前输入过的指令

  5. 网络测试

    ping百度,退出ping测试,ctrl+c

  6. 网络常用问题

    • 重启虚拟机,如果无法解决,尝试重启vmware
    • ping一下网关地址,看是否能通ping 192.168.136.2
    • 网关能ping通后,看是否能ping通Windows机器的ip地址
    • Windows能否ping通虚拟机IP地址
    • 如果Windows和虚拟机不通,需要检查Windows配置
      • 检查服务是否正常开启
      • 检查Windows的网络适配器

关闭防火墙

关闭防火墙,并且从开启启动项中删除自动重启。指令:

#查看防火墙状态
systemctl status firewalld
#关闭防火墙
systemctl stop firewalld
#禁止防火墙随机自启
systemctl disable firewalld

克隆虚拟机

为分布式Hadoop集群环境创建3台虚拟机。

虚拟机的基本指令:

#关闭虚拟机
shutdown -h now
#重启虚拟机
reboot

选中虚拟机,右键,“管理”->”克隆“,创建完整克隆:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lksrPQnX-1647349327848)(assets/1615249116553-1615249117697.png)]

克隆2次,得到三台虚拟机,分别为:

master:192.168.136.11

slave1:192.168.136.12

slave2:192.168.136.13

修改slave1和slave2的IP地址:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-539RKwlP-1647349327849)(assets/1615249797435-1615249798462.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Px4CKLXZ-1647349327849)(assets/1615249853048-1615249854399.png)]

重启网络服务,查看IP地址,测试网络是否连通。

SecureCRT软件连接

配置连接:

连接协议:SSH2

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yRFdoMZi-1647349327849)(assets/1615250508925-1615250510797.png)]

修改会话选项:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VfRpPQyP-1647349327850)(assets/1615251181975-1615251183389.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AWqoyMmx-1647349327850)(assets/1615251240924-1615251242029.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gqQIqyxQ-1647349327850)(assets/1615251335515-1615251337382.png)]

修改主机名

给虚拟机起个主机名,分别为master,slave1,slave2

指令(secureCRT中ctrl+alt+c复制指令,右键粘贴指令):

[root@localhost ~]# vi /etc/hostname
master
#重启虚拟机即可

修改映射文件

映射文件是ip地址和主机名的对应关系的文件。

[root@master ~]# vi /etc/hosts
192.168.136.11 master
192.168.136.12 slave1
192.168.136.13 slave2

配置时钟同步

ntp是一种自动在互联网上同步电脑时间的服务,使用之前需要先进行安装。(三台虚拟机都需要进行安装)

  1. 安装ntp服务

    [root@master ~]# yum install ntp
    
  2. 配置ntp

    [root@master ~]# vi /etc/sysconfig/ntpd
    # Command line options for ntpd
    OPTIONS="-g"
    YS_HWLOCK=yes
    
  3. 启动服务

    [root@master ~]# systemctl start ntpd
    [root@master ~]# systemctl status ntpd
    [root@master ~]# date
    

    winSCP安装及使用

    该软件用于在linux虚拟机和windows物理机之间进行文件传输。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-B2gGoV6F-1647349327850)(assets/1615290586776-1615290587861.png)]

安装JDK

注意:所有的软件安装包放在路径/usr/local/src下,所有的软件安装路径为/usr/local/src

  1. 将jdk安装包放在/usr/local/src下

    [root@master ~]# cd /usr/local/src/
    [root@master src]# ll
    总用量 185340
    -rw-r--r--. 1 root root 189784266 8月  27 2020 jdk-8u152-linux-x64.tar.gz
    
  2. 检查操作系统是否已安装openJDK,如果是的话,将其卸载#

    #先查询
    [root@master src]# rpm -qa | grep java
    java-1.8.0-openjdk-headless-1.8.0.131-11.b12.el7.x86_64
    javapackages-tools-3.4.1-11.el7.noarch
    tzdata-java-2017b-1.el7.noarch
    #再卸载
    [root@master src]# rpm -e --nodeps java-1.8.0-openjdk-headless-1.8.0.131-11.b12.el7.x86_64
    [root@master src]# rpm -e --nodeps javapackages-tools-3.4.1-11.el7.noarch
    [root@master src]# rpm -e --nodeps tzdata-java-2017b-1.el7.noarch
    
  3. 创建文件夹/usr/local/src

    [root@master src]# cd /opt
    [root@master opt]# mkdir software
    [root@master opt]# ll
    总用量 0
    drwxr-xr-x. 2 root root 6 3月   9 19:57 software
    
  4. 将安装包解压到/usr/local/src中

    [root@master ~]# tar -zxf /usr/local/src/jdk-8u152-linux-x64.tar.gz -C /usr/local/src/
    #重命名文件夹为java
    [root@master software]# mv /usr/local/src/jdk1.8.0_152/ /usr/local/src/java
    
  5. 修改用户权限

    我们使用root用户进行解压、重命名,此时java文件夹的使用权限归root用户。因为后期使用集群时,我们使用的是hadoop用户,所以我们需要将java文件夹的权限赋值给hadoop用户。

    添加hadoop用户:

    [root@master home]# useradd hadoop
    [root@master home]# passwd hadoop
    #输入2次新密码,密码为hadoop
    
    [root@master ~]# chown -R hadoop:hadoop /usr/local/src/java/
    
  6. 修改环境变量文件并生效

    全局环境变量文件是/etc/profile,在最后两行添加,保存退出

    [root@master ~]# vi /etc/profile
    export JAVA_HOME=/usr/local/src/java
    export PATH=$PATH:$JAVA_HOME/bin
    [root@master ~]# source /etc/profile
    
  7. 测试jdk是否安装成功

    [root@master ~]# java -version
    java version "1.8.0_152"
    Java(TM) SE Runtime Environment (build 1.8.0_152-b16)
    Java HotSpot(TM) 64-Bit Server VM (build 25.152-b16, mixed mode)
    

    将三台虚拟机的jdk都安装好。

    问题:

    如果不小心把/etc/profile文件改坏了,导致任何指令无法输入,怎么办?

    1. 重新传一份profile文件
    2. 在命令行中输入:export PATH=/usr/bin:/usr/sbin:/bin:/sbin:/usr/X11R6/bin

单机模式

  1. 解压安装包

    [root@master src]# tar -zxf /usr/local/src/hadoop-2.7.1.tar.gz -C /usr/local/src/ 
    
  2. 修改解压之后的文件夹名

    [root@master software]# mv hadoop-2.7.1/ hadoop
    
  3. 配置/etc/profile文件,保存退出,并生效。检查是否配置正确

    [root@master software]# vi /etc/profile
    export HADOOP_HOME=/usr/local/src/hadoop
    export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
    [root@master software]# source /etc/profile
    [root@master software]# hadoop version
    Hadoop 2.7.1
    Subversion https://git-wip-us.apache.org/repos/asf/hadoop.git -r 15ecc87ccf4a0228f35af08fc56de536e6ce657a
    
    

    路径讲解:

    [root@master hadoop]# ll
    总用量 28
    drwxr-xr-x. 2 10021 10021   194 6月  29 2015 bin
    drwxr-xr-x. 3 10021 10021    20 6月  29 2015 etc
    drwxr-xr-x. 2 10021 10021   106 6月  29 2015 include
    drwxr-xr-x. 3 10021 10021    20 6月  29 2015 lib
    drwxr-xr-x. 2 10021 10021   239 6月  29 2015 libexec
    -rw-r--r--. 1 10021 10021 15429 6月  29 2015 LICENSE.txt
    -rw-r--r--. 1 10021 10021   101 6月  29 2015 NOTICE.txt
    -rw-r--r--. 1 10021 10021  1366 6月  29 2015 README.txt
    drwxr-xr-x. 2 10021 10021  4096 6月  29 2015 sbin
    drwxr-xr-x. 4 10021 10021    31 6月  29 2015 share
    

    bin:存放Hadoop运行程序和管理软件

    etc:存放Hadoop配置文件(非常重要!)

    sbin:存放Hadoop集群启动、停止指令

    share:存放说明文档、案例、依赖的jar包

  4. 修改配置文件$HADOOP_HOME/etc/hadoop/hadoop-env.sh

    [root@master hadoop]# vi etc/hadoop/hadoop-env.sh 
    export JAVA_HOME=/usr/local/src/java
    

    保存退出。

  5. 修改权限,赋予hadoop用户使用权限

    [root@master software]# chown -R hadoop:hadoop hadoop/、
    
  6. 切换到hadoop用户,测试Hadoop是否能正常运行

    [root@master software]# su hadoop
    

    入门程序:WordCount,单词计数

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PSmBBx5K-1647349327851)(assets/1615446566097-1615446567339.png)]

    输入文件:/usr/local/src/input/hello.txt

    输出:/usr/local/src/out(不能提前创建好)

    执行hadoop jar指令,运行wordcount案例jar包测试Hadoop是否能正常计算:

    [hadoop@master input]$ hadoop jar /usr/local/src/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.1.jar wordcount /usr/local/src/input/hello.txt /usr/local/src/out
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rEwgiFP4-1647349327851)(assets/1615447156438-1615447157816.png)]

    查看输出文件内容:

    [hadoop@master out]$ cat part-r-00000 
    bigdata 2
    hadoop  2
    hello   1
    world   1
    

Hadoop的核心组件

HDFS,MapReduce和Yarn是Hadoop的三大核心组件。HDFS用于海量分布式数据的存储;MapReduce用于对海量数据进行分布式处理;Yarn用于进行资源调度。

HDFS

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LJUIJSFn-1647349327851)(assets/1615530224369-1615530225534.png)]

  1. NameNode,存储着FSImage和edits。它有4个方面的职责:
    • 管理HDFS的namespace:维护着文件系统树以及文件树中所有文件的元数据。FSImage文件存储HDFS上文件的元数据,如文件名、文件目录结构、文件属性(文件生成时间、副本数、权限、大小等)以及文件的数据块所在的DataNode等。edits文件记录着所有对文件系统的写操作(如上传、修改等)。
    • 管理DataNode上的数据块:NameNode决定了文件数据块存储到哪个DataNode上。
    • 处理客户端的读写请求:读取文件时,NameNode将文件所在的块列表反馈给客户端;写文件时,反馈一组DataNode给客户端用于进行写操作。写成功之后,将操作记录在edits文件中。
    • 配置副本策略:NameNode根据用户确定的副本策略(默认3个副本)管理HDFS中数据的副本。当HDFS中某个数据块的副本少于设定值时,它会指定其中一个块自动复制到其他DataNode上。
  2. DateNode(数据节点)负责存储数据,把每个HDFS数据块(默认128M)存储在本地文件系统的单独文件。
    • 存储实际的数据块
    • 处理客户端的读写请求,执行数据块的读和写
    • 向NameNode定期汇报数据块信息,并且向NameNode发送心跳信号保持联系。
  3. SecondaryNameNode(2NN,第二名称节点)主要用于合并数据文件FSImage。它会每隔一段时间(默认为3600秒)将NameNode上的FSImage和edits文件复制到本地,然后将二者合并成新的FSImage文件,并复制回NameNode。

MapReduce

(1)MapReduce是面向大型数据处理的、简化的、并行计算模型。
(2)将用户编写的业务逻辑代码和自带的默认组件整合成一个完整的分布式运算程序,使得开发并行计算应用程序变得很容易。
(3)MapReduce把对大数据的操作分发给多个子节点并行处理,然后整合各个子节点的输出结果,得到最终的计算结果。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bQN7rwn1-1647349327852)(assets/1615852542735-1615852543952.png)]

优点:
(1)易于编程:使用它的一些简单接口,就可以完成一个分布式程序。
(2)良好的拓展性:当计算资源不足时,可以简单地通过增加计算机的数量来扩展它的计算能力。
(3)高容错性:当运算节点出现故障时,MapReduce的计算任务可以自动转移到另一个节点运行,不需要人工干预。
(4)适合处理离线大数据:能够处理PB级的离线数据。

缺点:
(1)不适合实时计算:MapReduce达不到在秒级以内反馈运算结果。
(2)不适合流式计算:流式计算处理的数据是动态的,而MapReduce只能处理静态的数据。
(3)不适合有向图计算:对于有向图计算,MapReduce在处理数据的过程中,每个任务的输出结果都会写入磁盘,会造成大量的磁盘读写,形成瓶颈,降低系统的性能。

Yarn

伪分布式

仅需要在master一个节点上进行安装即可。大致步骤为解压->修改配置文件->启动相应进程->测试集群状态

SSH免密登录

与用户相关。不同的用户产生的秘钥文件是不同的。

思考:需要用哪个用户产生秘钥文件,并进行秘钥文件的分发?

hadoop用户。因此使用hadoop用户进行秘钥文件的生成和分发。

  1. 切换到hadoop用户

  2. 三台虚拟机分别生成秘钥文件

    [hadoop@master ~]$ ssh-keygen -t rsa
    [hadoop@slave1 ~]$ ssh-keygen -t rsa
    [hadoop@slave2 ~]$ ssh-keygen -t rsa
    
  3. 三台虚拟机分别分发三次秘钥文件

    [hadoop@master ~]$ ssh-copy-id master
    [hadoop@master ~]$ ssh-copy-id slave1
    [hadoop@master ~]$ ssh-copy-id slave2
    
  4. SSH登录测试

    [hadoop@master ~]$ ssh slave1
    Last failed login: Tue Mar 16 20:06:37 CST 2021 from slave2 on ssh:notty
    There was 1 failed login attempt since the last successful login.
    Last login: Tue Mar 16 19:55:51 2021
    [hadoop@slave1 ~]$ exit
    登出
    Connection to slave1 closed
    

修改配置文件

配置文件功能:

  1. core-site.xml:配置的是集群全局参数,用于定义系统级别的参数,如HDFS的URL(主节点位置)、Hadoop的临时目录等;

  2. hdfs-site.xml:HDFS参数,包括NameNode和DataNode的存放位置、文件副本个数、文件读取权限等;

  3. mapred-site.xml:MapReduce参数

  4. yarn-site.xml:Yarn的系统参数。如ResourceManager、NodeManager的通信端口,web监控端口等;

  5. 解压

    [root@master software]# tar -zxf /usr/local/src/hadoop-2.7.1.tar.gz -C /usr/local/src/
    [root@master software]# mv hadoop-2.7.1/ hadoop
    
  6. 配置/etc/profile文件并生效

    [root@master ~]# vi /etc/profile
    export HADOOP_HOME=/usr/local/src/hadoop
    export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
    [root@master ~]# source /etc/profile
    
  7. 将hadoop安装文件夹赋予hadoop用户权限,切换到hadoop用户

    [root@master software]# chown -R hadoop:hadoop hadoop/
    [root@master software]# su hadoop
    
  8. 修改配置文件core-site.xml

    [hadoop@master hadoop]# vi core-site.xml 
    <property>
    <!--hdfs地址-->
      <name>fs.defaultFS</name>
      <value>hdfs://master:9000</value>
    </property>
    <!-- 指定hadoop运行时产生文件的存储目录 -->
    <property>
      <name>hadoop.tmp.dir</name>
      <value>/usr/local/src/hadoop/data/tmp</value>
    </property>
    
  9. 修改配置文件hadoop-env.sh

    [hadoop@master hadoop]# vi hadoop-env.sh
    export JAVA_HOME=/usr/local/src/java
    
  10. 修改hdfs-site.xml

    [hadoop@master hadoop]# vi hdfs-site.xml
    <!--副本集个数-->
    <property>
            <name>dfs.replication</name>
            <value>1</value>
    </property>
    
  11. 修改yarn-env.sh

    [hadoop@master hadoop]# vi yarn-env.sh
    export JAVA_HOME=/usr/local/src/java
    
  12. 修改yarn-site.xml

    [hadoop@master hadoop]# vi yarn-site.xml 
    <!-- reducer获取数据的方式 -->
    <property>
            <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</value>
    </property>
    <!-- 指定YARN的ResourceManager的地址 -->
    <property>
            <name>yarn.resourcemanager.hostname</name>
            <value>master</value>
    </property>
    
  13. 修改mapred-env.sh

    [hadoop@master hadoop]# vi mapred-env.sh 
    export JAVA_HOME=/usr/local/src/java
    
  14. 修改mapred-site.xml

    [hadoop@master hadoop]# cp mapred-site.xml.template mapred-site.xml
    [hadoop@master hadoop]# vi mapred-site.xml
    <!-- 指定mr运行在yarn上 -->
    <property>
            <name>mapreduce.framework.name</name>
            <value>yarn
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值