• 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

  • 相关阅读:
    ASP代码审计学习笔记 -2.XSS跨站脚本
    ASP代码审计学习笔记-1.SQL注入
    基于时间延迟的Python验证脚本
    如何构造一个注入点
    动易CMS漏洞收集
    【渗透测试学习平台】 web for pentester -8.XML
    【渗透测试学习平台】 web for pentester -7.文件包含
    【渗透测试学习平台】 web for pentester -6.命令执行
    【渗透测试学习平台】 web for pentester -5.代码执行
    【渗透测试学习平台】 web for pentester -4.目录遍历
  • 原文地址:https://www.cnblogs.com/Charles-Yuan/p/9614615.html
Copyright © 2020-2023  润新知