美文网首页
Hadoop入门

Hadoop入门

作者: ChadJ | 来源:发表于2023-10-26 15:59 被阅读0次

    1 大数据概论

    1.1 大数据概念

    大数据是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。
    大数据主要解决海量数据的存储和分析计算问题。

    1.2 大数据特点(4V)

    • Volume 大量
      bit, byte, kb, mb, gb, tb, pb, eb, zb, yb, bb, nb, db
    • Velocity 高速
      增长速度快,双十一瞬间交易量几百亿
    • Variety 多样
      结构化和非结构化数据都有,网络日志、音频、视频、图片、地理位置信息等
    • Value 低价值密度
      数据量越多,有价值的数据密度越少,需要提纯。

    1.3 应用场景

    • 物流仓储:大数据分析助力精细化运营、提升销量、节约成本。
    • 零售:分析用户消费习惯,提升销量,例如纸尿布+啤酒。
    • 旅游:深度结合大数据与旅游行业需求,智慧管理、智慧服务、智慧营销。
    • 商品广告推荐:给用户推荐可能购买的商品。
    • 保险:海量数据挖掘及风险预测。
    • 金融:分析用户特征,挑选优质客户,防范欺诈风险。
    • 人工智能:机器学习,数据分析。

    1.4 部门业务流程

    1. 产品人员提出需求,例如统计总用户数、日活跃用户数、回流用户数等。
    2. 数据部门搭建数据平台、分析数据指标
    3. 数据可视化,报表、邮件、大屏幕等。

    1.5 部门组织结构

    1. 平台组
      • Hadoop、Flume、Kafka、HBase、Spark等框架平台搭建
      • 集群性能监控
      • 集群性能调优
    2. 数据仓库组
      • ETL工程师-数据清洗
      • Hive工程师-数据分析、数据仓库建模
    3. 数据挖掘组
      • 算法工程师
      • 推荐系统工程师
      • 用户画像工程师
    4. 报表开发组
      • JavaEE工程师

    2 Hadoop概论

    2.1 Hadoop是什么

    1. Hadoop是由Apache基金开发的分布式系统基础架构。
    2. 主要解决海量数据的存储和分析计算分体。
    3. 广义上Hadoop通常指Hadoop生态圈,包括:hadoop(hdfs mapreduse\common)、hive、pig、solr、hbase、zookeeper等。

    2.2 三大发行版本

    • Apache版,最原始最基础的版本;
    • Cloudera,在大型互联网企业中使用的较多;
    • Hortonworks,文档比较友好;

    2.3 优势

    • 高可靠性:底层维护了多个数据副本;
    • 高扩展性:可方便扩展数以千计的节点;
    • 高效性:MapReduce思想下,Hadoop是并行工作的,可以加快任务处理速度;
    • 高容错性:可自动将失败的任务重新分配;

    2.4 组成

    1. Hadoop1.x组成
      • MapReduce:计算 + 资源调度
      • HDFS:数据存储
      • Common:辅助工具
    2. Hadoop2.x组成
      • MapReduce:计算
      • Yarn:资源调度
      • HDFS:数据存储
      • Common:辅助工具

    2.4.1 HDFS架构概述

    1. NameNode(nn):存储文件的元数据,如文件名、文件目录结构、文件属性,以及每个文件的块列表和块所在的DataNode等。
    2. DataNode(dn):在本地文件系统存储文件块数据,以及块数据的校验和。
    3. SecondaryNameNode(2nn):用来监控HDFS状态的辅助后台程序,每隔一段时间获取HDFS元数据的快照。

    2.4.2 YARN架构

    yarn基本架构
    1. Resource Manager 主要作用
      • 处理客户端请求
      • 监控Node Manager
      • 启动或监控Application Master
      • 资源的分配与调度
    2. Node Manager 主要作用
      • 管理单个节点上的资源
      • 处理来自Resource Manager的命令
      • 处理来自Application Master的命令
    3. Application Master 作用
      • 负责数据的切分
      • 为应用程序申请资源并分配给内部的任务
      • 任务的监控与容错
    4. Container
      Container是YARN中的资源抽象,封装了某个节点上的多维资源,如内存、cpu、磁盘、网络等。

    2.4.3 MapReduce架构概述

    将计算过程分为两个阶段:Map和Reduce:

    • Map阶段并行处理输入数据
    • Reduce阶段对Map结果进行汇总

    2.5 大数据技术生态体系

    大数据生态体系
    推荐系统架构

    3 Hadoop运行环境搭建

    3.1 虚拟机环境准备

    1. 克隆/创建虚拟机
    2. 修改虚拟机的静态IP
    3. 修改主机名
    4. 关闭防火墙
    5. 创建hadoop用户
    6. 配置hadoop用户具有root权限
    7. /opt目录下创建文件夹module、software,并修改文件夹所有者
    cd /opt
    # 因为opt在root下,所以需要sudo
    sudo mkdir module
    sudo mkdir software
    sudo chown hadoop:hadoop module/ software/
    

    3.2 安装JDK

    如果安装版本低于1.7,则卸载该JDK

    # 查询是否安装
    rpm -qa | grep java
    # 卸载
    sudo rpm -e 软件包
    # 查看JDK安装路径
    which java
    

    将jdk上传到/opt/software,解压并配置jdk环境变量,这里不再赘述。

    3.3 安装Hadoop

    hadoop-2.7.2
    hadoop-2.7.2.tar.gz上传到/opt/software,然后解压添加环境变量就可以,和JDK安装类似。

    cd /opt/software/
    tar -zxvf hadoop-2.7.2.tar.gz -C /opt/module/
    ls /opt/module/
    sudo vi /etc/profile
    
    ### 尾部添加
    ## HADOOP_HOME
    export HADOOP_HOME=/opt/module/hadoop-2.7.2
    export PATH=$PATH:$HADOOP_HOME/bin
    export PATH=$PATH:$HADOOP_HOME/sbin
    
    # 刷新文件
    source /etc/profile
    # 验证
    hadoop version
    # 如果不成功则重启
    sync
    sudo reboot
    

    3.4 Hadoop目录结构

    1. bin:存放对Hadoop相关服务进行操作的脚本;
    2. etc:存放Hadoop的配置文件;
    3. lib:存放Hadoop的本地库;
    4. sbin:存放启动或停止Hadoop相关服务的脚本;
    5. share:存放Hadoop的依赖jar包、文档和官方案例;

    4.Hadoop运行模式

    Hadoop官方网站:http://hadoop.apache.org/

    Hadoop运行模式包括:本地模式、伪分布式模式和完全分布式模式。

    4.1 本地运行模式

    4.1.1 官方Grep案例

    cd /opt/moudle/hadoop-2.7.2
    mkdir input
    cp etc/hadoop/*.xml input
    # 执行MapReduce程序
    bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar grep input output 'dfs[a-z.]+'
    # 查看结果
    cat output/*
    

    4.1.2 官方WorkCount案例

    cd /opt/moudle/hadoop-2.7.2
    mkdir wcinput
    cd wcinput
    # 创建文件
    touch wc.input
    vi wc.input
    # 在文件里输入待统计数据
    cd /opt/module/hadoop-2.7.2
    hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount wcinput wcoutput
    # 查看结果
    cat wcoutput/part-r-0000
    

    4.2 伪分布式模式

    4.2.1 启动HDFS并运行MapReduce

    1. 配置集群

      1. 配置hadoop-env.sh,修改JAVA_HOME

        # 查看JDK安装路径
        echo $JAVA_HOME
        # 修改JAVA_HOME
        vi hadoop-env.sh
        export JAVA_HOME=/opt/module/jdk1.8.0_144
        
      2. 配置core-site.xml

        <!-- 指定HDFS中NameNode的地址 -->
        <property>
        <name>fs.defaultFS</name>
            <value>hdfs://hadoop101:9000</value>
        </property>
        
        <!-- 指定Hadoop运行时产生文件的存储目录 -->
        <property>
          <name>hadoop.tmp.dir</name>
          <value>/opt/module/hadoop-2.7.2/data/tmp</value>
        </property>
        
      3. 配置hdfs-site.xml

        <!-- 指定HDFS副本的数量 -->
        <property>
          <name>dfs.replication</name>
          <value>1</value>
        </property>
        
    2. 启动集群

      1. 格式化NameNode,只有第一次启动时格式化,以后不需要

        bin/hdfs namenode -format
        

        格式化NameNode会产生新的集群id,导致NameNodeDataNode的集群id不一致,集群找不到以往数据。格式化NameNode时一定要先删除datalog

      2. 启动NameNode

        sbin/hadoop-daemon.sh start namenode
        
      3. 启动DataNode

        sbin/hadoop-daemon.sh start datanode
        
      4. 可以用jps查看启动是否成功

    3. 查看集群

      http://hadoop101:50070/dfshealth.html#tab-overview

    4. 查看log日志

      在实际使用中遇到bug,可以根据日志去分析。

      cd /opt/module/hadoop-2.7.2/logs
      
    5. 操作集群

      1. 在HDFS上创建一个input文件夹

        bin/hdfs dfs -mkdir -p /user/chadJ/input
        
      2. 将测试文件内容上传到HDFS文件系统

        bin/hdfs dfs -put wcinput/wc.input /user/chadJ/input/
        
      3. 查看上传文件是否正确

        bin/hdfs dfs -ls
        bin/hdfs dfs -cat /user/chadJ/input/wc.input
        
      4. 运行MapReduce程序

        bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /user/chadJ/input/ /user/chadJ/output
        
      5. 查看结果

        bin/hdfs dfs -cat /user/chadJ/output/*
        

        也可在浏览器中查看。

      6. 将测试内容下载到本地

        bin/hdfs dfs -get /user/chadJ/output/part-r-0000 ./wcoutput/
        
      7. 删除输出结果

        hdfs dfs -rm -r /user/chadJ/output
        

    相关文章

      网友评论

          本文标题:Hadoop入门

          本文链接:https://www.haomeiwen.com/subject/xhjsidtx.html