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

猜你喜欢

转载自www.cnblogs.com/Charles-Yuan/p/9614615.html