zoukankan      html  css  js  c++  java
  • Hadoop.之.入门部署

    一、课程目标
      -》大数据是什么?大数据能做什么?
      -》什么是Hadoop?Hadoop的设计思想?
      -》Hadoop如何解决大数据的问题?(什么是hdfs与yarn、MapReduce)
      -》如何快速部署Hadoop环境(伪分布)

    二、大数据的应用及发展
      -》本质上的大数据技术:
        -》学习一系列的软件工具(hadoop、spark)处理数据?
        -》怎么处理?
      -》大数据工程师与数据分析师区别?
        -》数据分析师偏业务型:小数据量,样本分析
          -》第二层处理
        -》大数据(分析)工程师偏技术型:大数据量,总体分析
          -》第一层的分析处理
      -》应用及其工作岗位?
        -》大数据分析:商业化公司
          -》百度统计
          -》友盟
          -》talking data
          -》Google Analytic
          -》易分析
        -》精准营销/推荐系统/数据预测/风险控制
          -》用户画像:打标签
        -》数据挖掘/机器学习
      -》相关大数据技术?
        -》数据采集
          flume   sqoop   Logstash
        -》数据存储
          HDFS   Hbase   Hive    tacyon    redie   kakfa
        -》数据处理
          MapReduce   Hive   spark   storm   flink   kylin
        -》数据应用
          -》数据可视化
          -》用户画像
          -》推荐系统
          -》数据挖掘
      -》学习以上技术基础
        Java(多线程、常见工具:集合类、字符串、日期、JVM)
        SQL:大数据分析主流
        Linux:所有的大数据平台都搭建在Linux上


    三、Hadoop的介绍
      -》hadoop功能:
        -》Google的论文
          -》GFS:大数据存储
          -》MapReduce:大数据计算
          -》BigTable : 解决大数据实时存储(Hbase)
        -》大数据存储
          HDFS
        -》大数据计算
          MapReduce
      -》版本:
      hadoop1:
        hdfs
        MapReduce
      hadoop2:
        hdfs
        MapReduce
        yarn
      -》hadoop的官网
        hadoop.apache.org
      -》Hadoop四大组件
        Hadoop Common:
        The common utilities that support the other Hadoop modules.
        功能:用于支持其他模块和其他工具的接口

        Hadoop Distributed File System (HDFS?):
        A distributed file system that provides high-throughput access to application data.
        功能:分布式文件系统,用于存储大量数据的


        Hadoop YARN:
        A framework for job scheduling and cluster resource management.
        功能:分布式任务调度和资源管理


        Hadoop MapReduce: A YARN-based system for parallel processing of large data sets.
        功能:分布式处理数据计算模型(方式)

      -》分布式概念:区别于传统的单节点
        -》分布式存储
          -》单节点:
            1个2TB文件:每台电脑拥有600GB存储空间
              -》自己手动将2TB文件拆分成4个小文的
              -》在第一台机器存储一个文件
              -》一直存到第4台机器
            问题:
              -》存储时,自己手动将文件分割
              -》1个文件 -》 4个文件
              -》读,读4个文件
          -》分布式:
            1个2TB文件:每台机器拥有600GB存储空间
              -》将每台机器彼此之间构建一种关系
              -》让所有的机器变成一个整体:集群cluster
        -》分布式计算
          -》单节点:两颗CPU8核 64GB
            一台机器执行:10天
          -》分布式:集群:20颗CPU80核 640GB 单台 * 10
            集群机器执行:1天



    四、分布式存储:HDFS
      -》HDFS:分布式文件系统
        -》功能:
          -》管理存储文件
          -》文件数据的读写
        -》特点:
          -》分布式:将多台机器组成一个集群
          -》CS模式:
            客户端:client
            服务端:Server
          -》主从架构:
            主:NameNode(只有一个)
            -》接收客户端的请求
            -》负责管理所有的从节点
            -》负责管理元数据(内存)
              -》数据文件存储的账本
                -》每个文件被分成了几个块
                -》每个块有几个副本
                -》分别每个块存在那台机器
            从:DataNode(可以有很多个)
              -》负责真正的数据的读写
            客户端:
              -》提交用户的所有请求给服务端
              -》将用户的文件存储时进行分割
              -》将用户的文件读取时进行合并
            Secondary NameNode:辅助进程
              -》功能:辅助NameNode备份元数据
                  将NameNode内存中的元数据同步到本地磁盘中
          -》分块:
            HDFS会将用户存入的每一个文件按照128M一个块进行分块
              500M:
                block1:128M
                block2:128M
                block3:128M
                block4:116M
              每个块存储在不同从节点中
          -》副本:安全
            HDFS默认会为每个块复制两份,所以每一个块在hdfs上总共存了3份

            node1   node2    node3    node4
            block1   block2   block3    block4
            block2   block1   block2    block1
            block3   block3   block4
            block4
      -》读写流程
        用户        客户端     服务端
        我们自己     命令行      NameNode/DataNode

        -》写:
          -》用户操作客户端提交写的请求
          -》客户端将用户提供的文件进行分块,128M一个块
          -》客户端将第一个块写请求给NameNode
          -》NameNode接收客户端请求,NameNode会返回该数据块存储的DataNode的地址
          -》客户端选择离自己最近的那台机器将数据块提交给那台DataNode,第一台存储的DataNode会将数据块进行复制给其他的两台DataNode
          -》DataNode将存储结果返回给NameNode,NameNode记录元数据
          -》重复以上操作,直到每个块都存完了
          -》客户端所有块存储完成,直接返回
        -》读
          -》客户通过客户端发送读请求
          -》客户端请求NameNode,NameNode返回每个块的存储地址
          -》客户端从离自己最近的机器上读取每个块,将每个块进行合并成一个文件,返回给客户

      -》HDFS是逻辑还是实际文件系统?
        -》HDFS是由多台机器合在一起变成集群,对外提供统一接口的
        -》HDFS是一个软件
          软件      操作系统        硬件
          hdfs     Linux文件系统      硬盘
        -》HDFS是一个基于多台机器的文件系统构建的一个虚拟的FS
      -》所有的程序运行的物理流程
        -》启动程序
        -》读取硬盘中的数据加载到内存
        -》CPU只能读取内存中的数据

    五、Hadoop的安装部署
      -》hadoop部署模式
        -》本地模式:一般用于开发程序的测试
        -》伪分布式:一台机器,一般用于测试
        -》完全分布式:企业实际环境
      -》Linux环境准备
        -》配置所有机器的ip、主机名、映射
        -》关闭分防火墙、selinux
        -》创建统一的目录及用户
          -》必须使用一个普通用户来操作
              rdedu
          -》设置统一的安装目录
            sudo mkdir -p /opt/modules :这个目录用作安装目录
            sudo mkdir -p /opt/datas :这个目录用作放数据文件
            sudo mkdir -p /opt/tools :这个目录用作放软件安装包
            sudo chown -R rdedu:rdedu /opt/modules
            sudo chown -R rdedu:rdedu /opt/datas
            sudo chown -R rdedu:rdedu /opt/tools
        -》Linux句柄数:最大线程数、最大文件数……
        -》配置SSH免密钥登录:
          ssh:是一种安全加密协议
            ssh username@hostname
          ssh bigdata-training01.erongda.com:以当前用户登录该机器
          exit:退出

      -》配置ssh免密钥登录
        ssh-keygen -t rsa  放入命令行执行,一路回车
        ssh-copy-id bigdata-training01.erongda.com
      -》配置时间同步:分布式集群中要求每一台机器的时间是一致
      -》安装JDK
        -》上传jdk到tools目录下
        -》解压安装: tar -zxf /opt/tools/jdk-8u91-linux-x64.tar.gz -C /opt/modules/
        -》配置环境变量:sudo vim /etc/profile
          注意:这个文件不能随便乱动,如果不小心修改了什么,强制退出不要保存
          在文件的尾部添加:
            export JAVA_HOME=/opt/modules/jdk1.8.0_91
            export PATH=$PATH:$JAVA_HOME/bin
        -》刷新环境变量
          source /etc/profile
        -》验证:
          java -version

      -》Hadoop安装部署
        -》下载安装Hadoop
        -》发行公司:
          -》Apache
          -》Cloudera:CDH
          -》HortonWorks:HDP
          -》星环大数据:TDH
        -》发行版本
          -》Hadoop1:1.x和0.x
          -》Hadoop2:企业中最多
            2.5-2.9
          -》Hadoop3:去年发布正式版本,生产环境一般不会用的
        -》下载地址
          http://archive.apache.org/dist/
        -》解压安装
          tar -zxvf /opt/tools/hadoop-2.7.3.tar.gz -C /opt/modules/
          cd /opt/modules/hadoop-2.7.3/
          bin:该目录一般存放命令或者客户端
          etc/conf:配置文件目录
          lib:放依赖jar包
          logs:放日志文件
        -》修改配置
          http://hadoop.apache.org/docs/r2.7.6/hadoop-project-dist/hadoop-common/SingleCluster.html#Pseudo-Distributed_Operation
          /opt/modules/hadoop-2.7.3/etc/hadoop :配置文件目录
          -》修改env文件
            hadoop-env.sh:
            mapred-env.sh:
            yarn-env.sh:

            export JAVA_HOME=/opt/modules/jdk1.8.0_91
          -》修改site文件
            core-site.xml:配置Hadoop的全局属性
            <!--指定HDFS的地址即NameNode的地址-->
            <property>
              <name>fs.defaultFS</name>
                <value>hdfs://bigdata-training01.erongda.com:8020</value>
            </property>
            mkdir /opt/modules/hadoop-2.7.3/datas
            <!--指定Hadoop的临时存储目录-->
            <property>
              <name>hadoop.tmp.dir</name>
              <value>/opt/modules/hadoop-2.7.3/datas</value>
            </property>
            hdfs-site.xml:配置HDFS的属性
            slaves:用于指定所有从节点的地址
            bigdata-training01.erongda.com
        -》启动服务
          -》第一次使用HDFS,先进行格式化
            cd /opt/modules/hadoop-2.7.3/
            bin/hdfs namenode -format
        -》启动HDFS
          启动主节点
            sbin/hadoop-daemon.sh start namenode
          启动从节点
            sbin/hadoop-daemon.sh start datanode
        -》测试运行
          -》jps
          6582 Jps
          6328 NameNode
          6479 DataNode
      -》访问web端口:50070
        在浏览器中输入:ip:50070
          192.168.134.222:50070
      -》hdfs的文件系统:类似于Linux文件系统,从/目录开始
      -》执行HDFS的客户端操作
        -》创建文件夹
          bin/hdfs dfs -mkdir -p /wordcount/input
        -》上传文件:从Linux到hdfs
          bin/hdfs dfs -put /opt/datas/wc.txt /wordcount/input/
        -》下载文件:从hdfs到Linux
          bin/hdfs dfs -get /wordcount/input/wc.txt ~/
        -》删除文件
          bin/hdfs dfs -rm -r /test
        -》查看文件
          bin/hdfs dfs -cat /wordcount/input/wc.txt
        -》复制、移动……
          -cp
          -mv
      客户 -> 客户端 -> NameNode/DataNode
      -》关闭HDFS
        sbin/hadoop-daemon.sh stop namenode
        sbin/hadoop-daemon.sh stop datanode


      Connection refused:连接拒绝
      -》主机地址解析不对
      -》服务没有开启(端口没有开放)


    六、分布式资源管理和任务调度:Yarn
      -》资源管理
        -》所有资源(整个集群中所有的资源)分配
          10台机器   每台机器1核1G
      -》任务调度
        -》一次性提交10个程序
        -》谁先运行,谁后运行?每个程序能用多少资源?
      -》特点:
        -》分布式
        -》主从架构
          主:ResourceManager
            -》负责接收所有用户的请求
            -》负责管理所有从节点
            -》负责资源管理和任务调度
          从:NodeManager
            -》负责真正执行程序
      -》MapReduce程序在Yarn上执行的流程
        1-客户通过客户端提交处理数据的程序
        2-客户端将请求提交给RM,RM随机选择一个NM,在该NM上启动APP Master
        3-APP Master向RM请求资源和指令
        4-RM中的Resource Schedule将每台NM能够使用的资源信息和指令封装成container返回给APP Master
          注意:真正resourcemanager做的是资源管理,控制所有nodemanager能够使用自己多少资源
        5-APP Master将资源和指令发送给所有的NM
        6-所有的NM,启动Map task和Reduce task来运行程序
        7-每个NM运行完成之后将结果反馈给APP Master
        8-APP Master将运行结果返回给RM

      -》MapReduce的运行过程
        input:输入
        map:将一个大任务拆分成多个小的任务
        shuflle
        reduce:将每个小任务的结果进行合并
        ouput:将结果进行保存

      -》安装部署Yarn
        -》下载解压Hadoop
        -》修改配置
          -》修改hdfs配置
          -》修改MapReduce配置:etc/hadoop/mapred-site.xml
            mv etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml
            <!--指定MapReduce程序运行在yarn上-->
            <property>
              <name>mapreduce.framework.name</name>
              <value>yarn</value>
            </property>
          -》修改Yarn配置:etc/hadoop/yarn-site.xml
            <!--指定yarn上运行的程序的类型-->
            <property>
              <name>yarn.nodemanager.aux-services</name>
              <value>mapreduce_shuffle</value>
            </property>
            <!--指定resourcemanager的地址-->
            <property>
              <name>yarn.resourcemanager.hostname</name>
              <value>bigdata-training01.erongda.com</value>
            </property>
          -》修改slaves文件:指定datanode和nodemanager的地址
        -》启动服务
          启动resourcemanager
            sbin/yarn-daemon.sh start resourcemanager
          启动nodemanager
            sbin/yarn-daemon.sh start nodemanager
        -》测试运行
          7376 ResourceManager
          7714 Jps
          7010 NameNode
          7604 NodeManager
          6479 DataNode

          访问web端口:8088

          http://192.168.134.222:8088
        -》提交wordcount程序
          统计文件中每个单词出现多少次
          -》将MapReduce程序提交给Yarn来执行,让nodemanager按照MapReduce的方式来执行

          -》MapReduce输入默认读hdfs的文件,必须已存在
          -》MapReduce输出的目录是不能提前存在的


          bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar wordcount /wordcount/input/wc.txt /wordcount/ouput

          通过yarn客户端提交运行一个jar包,jar包在share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar路径下,运行jar包中的wordcount程序,输入目录是/wordcount/input/wc.txt,输出目录是/wordcount/ouput

      -》必须记住端口;
        NameNode的RPC端口:8020
        NameNode的http端口:50070
        ResourceManager的Rpc端口:8032
        ResourceManager的http端口:8088

        -》所有客户端的请求、心跳、汇报等等都走rpc端口
        -》所有web界面的提供都走http端口
         -》关机前记得关闭所有进程
        将启动命令中的 start更换为stop
     

    如有问题,欢迎纠正!!!

    如有转载,请标明源处:https://www.cnblogs.com/Charles-Yuan/p/9614615.html

  • 相关阅读:
    【NOIP2007】守望者的逃离
    20200321(ABC)题解 by 马鸿儒 孙晨曦
    20200320(ABC)题解 by 王一帆
    20200319(ABC)题解 by 王一帆 梁延杰 丁智辰
    20200314(ABC)题解 by 董国梁 蒋丽君 章思航
    20200309(ABC)题解 by 梁延杰
    20200307(DEF)题解 by 孙晨曦
    20200306(ABC)题解 by 孙晨曦
    20200305(DEF)题解 by 孙晨曦
    20200303(ABC)题解 by 王锐,董国梁
  • 原文地址:https://www.cnblogs.com/Charles-Yuan/p/9614615.html
Copyright © 2011-2022 走看看