Hadoop

本文详细介绍了如何搭建Hadoop集群,包括集群准备、安装配置、启动检查以及Hadoop的相关知识点,如HDFS的主从结构、YARN的资源调度、MapReduce的工作原理等。
摘要由CSDN通过智能技术生成

Hadoop集群搭建

一、准备工作:

  • 首先准备好三台虚拟机:master,node1,node2。
  • 时间同步,jdk1.8
java -version
  • 修改主机命

  • 三台分别执行 vim /etc/hostname 并将内容指定为对应的主机名
    
  • 关闭防火墙:systemctl stop firewalld

    • 查看防火墙状态:systemctl status firewalld
    • 取消防火墙自启:systemctl disable firewalld
  • 静态IP配置

    • 直接使用图形化界面配置(不推荐)

    • 手动编辑配置文件进行配置

      1、编辑网络配置文件
      vim /etc/sysconfig/network-scripts/ifcfg-ens33
      
      TYPE=Ethernet
      BOOTPROTO=static
      HWADDR=00:0C:29:E2:B8:F2
      NAME=ens33
      DEVICE=ens33
      ONBOOT=yes
      IPADDR=192.168.190.100
      GATEWAY=192.168.190.2
      NETMASK=255.255.255.0
      DNS1=192.168.190.2
      DNS2=223.6.6.6
      
      需要修改:HWADDR(mac地址)
      		IPADDR(根据自己的网段,自定义IP地址)
      		GATEWAY(根据自己的网段填写对应的网关地址)
      
      2、关闭NetworkManager,并取消开机自启
      systemctl stop NetworkManager
      systemctl disable NetworkManager
      
      3、重启网络服务
      systemctl restart network
      
  • 免密登录

    # 1、生成密钥
    ssh-keygen -t rsa
    # 2、配置免密登录
    ssh-copy-id master
    ssh-copy-id node1
    ssh-copy-id node2
    # 3、测试免密登录
    ssh node1
    
  • 配置好映射文件:/etc/hosts

    192.168.190.100 master
    192.168.190.101 node1
    192.168.190.102 node2
    

二、搭建Hadoop集群

1、上传安装包并解压
# 使用xftp上传压缩包至master的/usr/local/soft/packages/
cd /urs/local/soft/packages/
# 解压
tar -zxvf hadoop-2.7.6.tar.gz -C /usr/local/soft/
2、配置环境变量
vim /etc/profile

JAVA_HOME=/usr/local/soft/jdk1.8.0_171
HADOOP_HOME=/usr/local/soft/hadoop-2.7.6
export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

# 重新加载环境变量
source /etc/profile
3、修改Hadoop配置文件
  • cd /usr/local/soft/hadoop-2.7.6/etc/hadoop/

  • core-site.xml

        <property>
            <name>fs.defaultFS</name>
            <value>hdfs://master:9000</value>
        </property>
    
        <property>
            <name>hadoop.tmp.dir</name>
            <value>/usr/local/soft/hadoop-2.7.6/tmp</value>
        </property>
    
        <property>
            <name>fs.trash.interval</name>
            <value>1440</value>
        </property>
    
  • hadoop-env.sh

    export JAVA_HOME=/usr/local/soft/jdk1.8.0_171
    

    image.png

  • hdfs-site.xml

        <property>
            <name>dfs.replication</name>
            <value>1</value>
        </property>
    
        <property>
            <name>dfs.permissions</name>
            <value>false</value>
        </property>
    
  • mapred-site.xml.template

    # 1、重命名文件
    cp mapred-site.xml.template mapred-site.xml
    # 2、修改
        <property>
            <name>mapreduce.framework.name</name>
            <value>yarn</value>
        </property>
    
        <property>  
            <name>mapreduce.jobhistory.address</name>  
            <value>master:10020</value>  
        </property>  
    
        <property>  
            <name>mapreduce.jobhistory.webapp.address</name>  
            <value>master:19888</value>  
        </property> 
    
  • slaves

    node1
    node2
    
  • yarn-site.xml

        <property>
            <name>yarn.resourcemanager.hostname</name>
            <value>master</value>
        </property>
    
        <property>
            <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</value>
        </property>
    
        <property>
            <name>yarn.log-aggregation-enable</name>
            <value>true</value>
        </property>
    
        <property>
            <name>yarn.log-aggregation.retain-seconds</name>
            <value>604800</value>
        </property>
    
4、分发Hadoop到node1、node2
cd /usr/local/soft/
scp -r hadoop-2.7.6/ node1:`pwd`
scp -r hadoop-2.7.6/ node2:`pwd`
5、格式化namenode(第一次启动的时候需要执行)
hdfs namenode -format

image.png

6、启动Hadoop集群
start-all.sh
7、检查master、node1、node2上的进程
  • master:

    [root@master soft]# jps
    2597 NameNode
    2793 SecondaryNameNode
    2953 ResourceManager
    3215 Jps
    
  • node1:

    [root@node1 jdk1.8.0_171]# jps
    11361 DataNode
    11459 NodeManager
    11559 Jps
    
  • node2:

    [root@node2 ~]# jps
    11384 DataNode
    11482 NodeManager
    11582 Jps
    
8、访问HDFS的WEB界面
http://master:50070

image.png

9、访问YARN的WEB界面
http://master:8088

image.png

三、Hadoop相关知识点

1.什么是hadoop:
  • hadoop是适合海量数据的分布式存储和分布式计算的平台。
2.hadoop组件:
  • 主要包含三个组件hdfs、mapreduce、yarn
  • hdfs是一个分布式存储框架,适合海量的数据存储。
  • mapreduce是一个分布式计算框架,适合海量数据计算。
  • yarn是一个资源调度平台,负责给计算框架分配计算资源
    在这里插入图片描述
HDFS
  • hdfs是具有主从结构。hdfs集群是由单个名称节点组成,主服务器管理文件系统名称空间,并控制客户机对文件的访问。此外,还有许多数据节点,通常是集群中的每个节点一个,他们管理连接到运行他们的节点的存储。
  • 在分布式存储系统中,分散在不同节点中的数据可能属于一个文件。
  • 为了组织众多的文件,把文件可以放到不同的文件夹中,文件夹可以一级一级的包含。我们把这种组织形式称为命名空间。命名空间管理整个服务器集群中的所有文件。
  • 在集群中:主节点负责命名空间,而从节点夫怎存储真实数据,这种形式就称为主从结构。
Block块
  • 文件上传前需要进行分块,这个块就是block块,一般为128mb。如果一个文件不满128mb,那么它就是一个block块。
Packet
  • packet则是第二大的单位,他是client端向datanode之间传数据的基本单位,默认大小为64kb。
主从结构
  • 主从结构:
    • 主节点:namenode
    • 从节点:datanode
  • namenode负责接收用户请求,是用户操作的入口,维护文件系统的目录结构,称为命名空间。
  • datanode负责存储数据。
YARN
  • 主从结构:
    • 主节点,ResourceManager
    • 从节点,NodeManager
  • ReduceManager,负责集群资源的分配与调度,MR、Storm、Spark等应用必须实现这个接口才能被RM管理。
  • NodeManager负责单节点资源的管理(cpu、内存)
MAPERDUCE
  • 主从结构
    • 主节点,只有一个MRAppMarter
    • 从点,就是具体的task
  • MRAappMaster负责接收客户端提交的计算任务,把计算任务分给nodemanager的Container中执行。
  • Task责是负责处理数据。
hadoop的特点:
  • 扩容能力:能可靠的处理pb级别的数据,如果数据量不够用那么增加节点就行了。
  • 成本低:由普通机器组成的服务器集群。
  • 高效率:通过分发计算程序,可在所有的分节点上并行的处理。
  • 可靠性:能够自动的维护数据的多副本,并且在任务失败后能够自动的重新部署计算任务。
Mapreduce
  • mapreduce是分布式运行的,由两个阶段组成:Map和Reduce。
原理
  • 首先文件分为多个切片,一个切片对应一个Map任务。然后Map任务把数据给Shuffle,最终由Shuffle处理好数据之后再发给Reduce形成一个个part部分。
Shuffle解析

在这里插入图片描述

  • 首先map任务运行完之后将数据写到 buffer in memory(环形缓冲区,默认大小为100M,当写入数据达到80%的时候那么缓冲区将会锁定,进行反向溢写磁盘。)里面。因为我们处理数据实在内存中执行的,如果直接将数据写入内存,那么效率将会非常低,所以要有一个缓冲区。
  • 环形缓冲区的数据出来之后,它会在磁盘上生成一个文件,进行分区,排序。
  • 之后相同的数据(key)会进入到同一个reduce任务,放入同一个分区中来。通过hashpartition进行计算不同key的哈希值,最后对哈希值进行reduce取余,结果有多少种就会产生几个分区。
  • 每个map任务都会产生三个分区,把对应的分区数据全部拉来进行合并(合并过程中也会产生排序)。最终将结果交给Reduce进行数据处理。(在此也会将数据先放在内存中,大小不确定,占70%reduce可使用的堆内存。)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值