zoukankan      html  css  js  c++  java
  • 安装Hadoop

    一、大数据  

      大数据的特性

      (一)大体量,可从数百TB,PB,EB 

      (二)多样性,大数据包括各种格式和形态的数据

      (三)时效性,很多大数据需要在一定的时间限度下得到及时处理

      (四)准确性,处理的结果一定要准备性

      (五)大价值,大数据包含很多的深度的价值,大数据分析挖掘和利用将带来巨大的商业价值

    二、Hadoop

      使用java开发的是软件平台

      (一)三大核心组件

        1. HDFS,分布式文件系统(ceph差不多)Client交互NameNode数据存在指定的DataNode上,Client交互把数据存在指定的DataNode上,DataNode会向NameNode返回数据存放的路径,NameNode在 FSimage中记录。

          

            4个角色 

            (1)NameNode

               Master节点,管理HDFS的名称空间和数据块映射信息,配置副本策略,处理所有客户端请求

                NameNode把名称空间和数据块映射信息存在 Fsimage

            (2) Secondary NameNode

              - 定期合并 Fsimage和 Fsedits推送给NameNode

                Fsedits(文件变更日志,把每次修改的数据都以补丁样式修改,取数据的时候先取出整体的在打补丁)

              - 紧急情况下,可辅助恢复NameNode 

              但是 Secondary NameNode 并非NameNode的热备 

            (3)DataNode

              - 数据存储节点,存储实际的数据

              - 汇报存储信息给NameNode

            (4)Client

              - 切分文件(切分每块128M 每块可以为多副本)

              - 访问HDFS

              - 与NameNode交互,获取文件的位置信息(切分数据存在什么地方有NameNode决定)

              - 与DataNode交互,读取和写入数据(NameNode决定存储位置Client把数据写入DataNode中)

               在读数据的时候Client交互NameNode获取文件位置,再从DataNode中读取文件(和写入文件一样)

            namenode和secondary namenode的关系图

        2. YARN,集群资源管理系统

          

          角色

          (1)ResourceManager(重要)

            - 处理客户端请求  

            - 启动/监控ApplicationMaster

            - 监控NodeManage

            - 资源分配预调度

          (2)NodeManager(重要)

            - 单个节点上的资源管理

            - 处理来自ResourceManage的命令

            - 处理来自ApplicationMaster的命令

          (3)ApplicationMaster

            - 数据切分

            - 为应用程序申请资源,并分配给内部任务

            - 任务监控与容错

          (4)Container 

            - 对任务运行环境的抽象,封装了CPU、内存等

            - 多为资源及环境变量、启动命令等任务运行相关的信息资源分与调度

          (5)Client

            - 用户与Yarn交互的客户端程序  

            - 提交应用程序、监控应用程序状态,杀死应用程序等

          Yarn的核心思想

        将JobTracker和TaskTracker 进行隔离,他有下面积大构成组件

          - ResourceManager一个全局的资源管理器

          - NodeManager每个节点代理

          - ApplicationMaster 代表每个应用

          - 每一个ApplicationMaster有多个Container在NodeManager上运行

        3. MapReduce,分布式计算框架

          

          4个角色

            (1) JobTracker

              - Master节点只有一个

              - 管理所有作业、任务的监控、错误处理等

              - 将任务分解成一系列任务,并分派给TaskTracker

            (2)TaskTracker

              - Slave节点,一般为多台

              - 运行Map Task 和 Reduce Task

              - 并与JobTracker交互,汇报任务状态

            (3)Map Task

              解析每条数据记录,传递给用户编写的map()并执行,将输出结果写入本地磁盘

              - 如果为map-only作业 直接写入HDFS中

            (4)Reducer Task  

              从Map Task的执行结果中,远程读取输入数据,对数据进行排序,将数据按照分组传递给用户编写的Reduce函数执行

      

        部署有三种模式(伪分布和完全分布的区别 伪分布就是把所有组件放在一台机器上 完全分布就是把组件放在各个机器上 分开放)

          (1)单机

          (2)伪分布

          (3)完全分布

      (二)安装单机

        1. 单机

           (1)安装

             yum -y install java-1.8.0-openjdk-devel

          (2)https://hadoop.apache.org 下载软件 是个tar包 java写的不需要编译放在那个目录下就安装在那个目录下

            安装完之后需要声明 java环境还有装在哪个目录下(Hadoop的配置文件/etc/hadoop/hadoop-env.sh)

            

             查看java安装在哪个目录 rpm -ql java-1.8.0-openjdk

            如果不声明的话敲下面命令 会报错

            

        (3)测试(那个词汇 出现的频率最高)

          主机名必须要ping通

          

            在结果目录中会有两个文件 一个是结果文件 一个是 是否成功的文件(是成功的话 _SUCCESS)

          workcount 这个jar脚本中 其中一个算法里面还有 grep、jion、sort等等

      (三)完全分布式

        1. 搭建HDFS(/etc/hosts 文件中绑定主机名)

        

         2. 基础环境准备

          (1)禁用SElinux    

          (2)禁用firewalld

          (3)安装java-1.8.0-opnejdk-devel

          (4)关闭 ssh yes检测 (/etc/ssh/ssh_config中  StricHostKeyChecking 这行改为no)          

          

           如果是注释的不用 取消注释 复制 粘贴到 Host * 下面

          (5)配置免密钥登录(给所有主机 传送密钥,包括本机)

            ssh-keygen  -/root/.ssh/id_rsa  -N ''

            ssh-copy-id  主机ip      

        3. 配置 (地址 http://hadoop.apache.org/docs  按照安装的Hadoop的版本 选择文档)

            

          (1) 第一个配置文件 core-site.xml (Hadoop核心配置文件)

            

             第一个表示 是用什么文件系统存储数据 (nn01 是NameNode的主机名)

             第二个是 Hadoop的数据存储目录(NameNode和DateNode 一样都是这个目录)

          (2) 配置 HDFS文件hdfs-site.xml

             

              第一个参数 指定 NameNode的主机

            第二个参数 指定NameNode.Secondary的主机

            第三个参数 副本数是多少

          (3)第三个配置文件 Slaves,声明DateNode主机 (默认的localhost 删除了) 

            

            (4)把Hadoop的文件夹 同步到 其他HDFS主机上(HDFS的配置都一样的 配置一台 把配置文件传给其他主机)

            (5) 格式化

            在NameNode上创建 /var/hadoop  文件夹

            在NameNode上执行格式化操作

              ./bin/hdfs  namenode  -format  

            启动集群(启动之后 会在Hadoop配置文件下自动创建一个 logs 文件)

              ./sbin/start-dfs.sh               

           (6)验证

              在所有的主机上敲 jps 这个命令 如果 角色都有说明 启动成功

              在NameNode上敲  .bin/hdfs dfsadmin -report 查看集群信息,成功的话在显示的虚线下面会有每个DateNode的信息

        4. 安装Yarn/MapReduce

          在我们机器不是很充足的时候可以吧不同软件放在同一个机器上,放在同一台机器上的软件要避免资源冲突

          (1)没有MapReduce配置文件 在Hadoop配置文件下

            

              

               参数是 谁来管理 MapReduce 默认是 local 咱们使用yarn管理

           (2)配置Yarn文件

            

              第一个参数指定 ResourceManager主机

              第二个参数指定 什么运算框架 咱们是使用的MapReduce

          (3) 同步配置文件到其他Yarn主机  

            启动Yarn    

            ./sbin/start-yarn.sh

          (4)检测

            jps 查看角色

            ./bin/yarn node -list 能看到下面yarn节点就说明配置成功  

     二、使用hadoop

        和shell命令 差不多./bin/hadoop fs -ls /  需要在 命令前加上  ./bin/hadoop fs -后面跟shell   

        在shell中 touch 是创建 文件的  Hadoop中 touchz 加一个z

        由于上面配置文件中定义 存储的位置是 HDFS  我们创建的文件/文件夹 都在 HDFS://nn01:9000/的 根目录下

        从本地上传到文件系统 ./bin/hadoop fs -put *.txt /aaa

        文件系统本地下载 ./bin/hadoop fs -get /aaa 

        (1)分析数据测试

          ./bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar wordcount /aaa /bbb

          我们也可以直接分析 本地的文件  把 /aaa 换成 file:///本地文件下  (/aaa的全写是 hdfs://nn01:9000/aaa  是Hadoop主配置文件中我们定义的 default下面的values)

       

          

          

      

  • 相关阅读:
    Python 字符串(一)
    UVA 11552 四 Fewest Flops
    UVA 10534 三 Wavio Sequence
    UVA 1424 二 Salesmen
    UVA 11584 一 Partitioning by Palindromes
    CodeForces 549G Happy Line
    CodeForces 451C Predict Outcome of the Game
    CodeForces 567C Geometric Progression
    CodeForces 527B Error Correct System
    CodeForces 552C Vanya and Scales
  • 原文地址:https://www.cnblogs.com/zshBlos/p/13646847.html
Copyright © 2011-2022 走看看