zoukankan      html  css  js  c++  java
  • 大数据基础之hdfs3

    1、hdfs的副本的配置

    修改hdfs-site.xml文件

    <!-- 注释配置数据块的冗余度,默认是3 -->
    <property>
    <name>dfs.replication</name>
    <value>1</value>
    </property>
    <!--注释配置HDFS的权限检查,默认是true-->
    <property>
    <name>dfs.permissions</name>
    <value>false</value>
    </property>
    <property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>hsiehchou122:50090</value>
    </property>

    需要同步到其它机器:

    scp hdfs-site.xml hsiehchou122:$PWD
    scp hdfs-site.xml hsiehchou123:$PWD
    scp hdfs-site.xml hsiehchou124:$PWD

    这里我划重点(亲自经历)
    如果原来的分布式hadoop集群的主节点有Secondary NameNode,需要配置到其他节点,因为如果主节点挂了,其也是挂了,它的作用是在HDFS中提供一个检查点,相当于NameNode的助手节点
    职责是:合并NameNode的edit logs到fsimage文件中

    2、hadoop启动方式

    1)启动hdfs集群
    start-dfs.sh
    2)启动yarn集群
    start-yarn.sh
    3)启动hadoop集群
    start-all.sh

    3、大数据干什么的

    1)海量数据的存储(mysql/oracle)
    分布式文件系统hdfs
    dfs->Hdfs
    mapreduce->mapreduce
    bigtable->hbase
    分而治之!

    2)海量数据的计算
    分布式计算框架mapreduce
    配置checkpoint时间

    <property>
    <name>dfs.namenode.checkpoint.period</name>
    <value>7200</value>
    </property>

    systemctl set-default graphical.target由命令行模式更改为图形界面模式
    systemctl set-default multi-user.target由图形界面模式更改为命令行模式

    4、hdfs-namenode工作机制

    0、加载编辑日志与镜像文件到内存(NameNode)
    edits_0001
    edits_0002
    fsimage fsimage fsimage
    1、客户端发起命令(client)
    hdfs dfs -ls /
    2、滚动正在写的edits(NameNode)
    3、记录操作日志更新 滚动日志(NameNode)
    4、拷贝到Secondary NameNode
    NameNode请求是否需要checkpoint

    Secondary NameNode
    触发checkpoint条件:
    1、定时的时间
    2、edits中数据已满
    Secondary NameNode请求执行checkpoint
    5、加载内存进行合并
    6、生成镜像fsimage.checkpoint
    7、拷贝到NameNode
    8、NameNode对fsimage.checkpoint重命名成fsimage

    hadoop2.8.4

    安装部署
    1)准备工作
    设置主机名:vi /etc/hostname
    注意:需要重启 reboot
    设置映射:vi /etc/hosts
    设置免密登录:ssh-keygen
    ssh-copy-id hd-01

    2)安装jdk
    上传安装包
    CRT:alt+p
    解压
    tar -zxvf .tar.gz
    配置环境变量

    export JAVA_HOME=/root/hd/jdk1.8.0_192
    export PATH=$JAVA_HOME/bin:$PATH

    注意:需要source /etc/profile
    分发jdk
    scp jdk hd-02:/root/hd
    scp /etc/profile hd-02:/etc/
    source /etc/profile

    3)安装hadoop
    上传安装包
    alt + p
    解压
    tar -zxvf .tar.gz
    修改配置文件
    core-site.xml

    <property>
    <name>fs.defaultFS</name>
    <value>hdfs://hsiehchou121:9000</value>
    </property>

    hdfs-site.xml

    <property>
    <name>dfs.namenode.name.dir</name>
    <value>/root/hd/dfs/name</value>
    </property>
    <property>
    <name>dfs.datanode.data.dir</name>
    <value>/root/hd/dfs/data</value>
    </property>
    <property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>hsiehchou122:50090</value>
    </property>

    mapred-site.xml

    <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
    </property>

    yarn-site.xml

    <property>
    <name>yarn.resourcemanager.hostname</name>
    <value>hsiehchou121</value>
    </property>
    <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
    </property>
    <property>
    <name>yarn.nodemanager.pmem-check-enabled</name>
    <value>false</value>
    </property>
    <property>
    <name>yarn.nodemanager.vmem-check-enabled</name>
    <value>false</value>
    </property>

    配置环境变量

    export HADOOP_HOME=/root/hd/hadoop-2.8.4
    export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

    修改slaves文件加入从节点
    格式化namenode
    hadoop namenode -format
    启动:start-all.sh

    hadoopMapReduce

    官方:Apache™Hadoop®项目开发了用于可靠,可扩展的分布式计算的开源软件
    Apache Hadoop软件库是一个框架,允许使用简单的编程模型跨计算机集群分布式处理
    大型数据集。它旨在从单个服务器扩展到数千台计算机,每台计算机都提供本地计算和
    存储。该库本身不是依靠硬件来提供高可用性,而是设计用于检测和处理应用层的故
    障,从而在计算机集群之上提供高可用性服务,每个计算机都可能容易出现故障
    阿里的Flink(9000万欧元) Blink

    MapReduce分布式计算程序的编程框架。基于hadoop的数据分析的应用
    MR优点:
    1)框架易于编程
    2)可靠容错(集群)
    3)可以处理海量数据(1T+ PB+) 1PB = 1024TB
    4)拓展性,可以通过动态的增减节点来拓展计算能力

    MapReduce的思想

    数据:海量单词
    hello reba
    hello mimi
    hello liya
    mimi big
    需求:对每个单词出现的次数统计出来
    思想:分而治之!
    解决方式:
    1)每个单词记录一次(map阶段)
    <hello,1> <reba,1> <hello,1> <mimi,1>
    2)相同单词的key不变,value累加求和即可(reduce阶段)
    <hello,1+1+1>
    对数据进行计算

    对wordcount例子程序分析

    1)整个wordcount分为几个阶段?
    三个
    2)有哪几个阶段?
    mapper
    reducer
    driver
    3)每个阶段有什么作用
    mapper:对数据进行打散<hello,1><mimi,1>
    reducer:对数据进行聚合<hello,1+1+1>
    driver:提交任务
    4)详解

    Mapper阶段

    将数据转换为String
    对数据进行切分处理
    把每个单词后加1
    输出到reducer阶段

    Reducer阶段

    根据key进行聚合
    输出key出现总的次数

    Driver阶段

    创建任务
    关联使用的Mapper/Reducer类
    指定mapper输出数据的kv类型
    指定reducer输出的数据的kv类型
    指定数据的输入路径与输出路径
    提交

    hadoop数据类型

    我们看到的wordcount程序中的泛型中的数据类型其实是hadoop的序列化的数据类
    型。
    为什么要进行序列化?用java的类型行不行?(可以)
    Java的序列化:Serliazable太重。
    hadoop自己开发了一套序列化机制。Writable,精简高效。海量数据。
    hadoop序列化类型与Java数据类型

    Java数据类型 Hadoop序列化类型
    int IntWritable
    long LongWritable
    boolean BooleanWritable
    byte ByteWritable
    float FloatWritable
    double DoubleWritable
    String Text

    wordcount测试

    1)本地模式
    2)集群模式
    hadoop jar .jar wordcount /wc/in /wc/out

    hadoop jar mapreduce-1.0-SNAPSHOT.jar 全类名 /wc/in /wc/out

  • 相关阅读:
    基本技能训练之线程
    关于UEditor的使用配置(图片上传配置)
    PAT 乙级练习题1002. 写出这个数 (20)
    codeforces 682C Alyona and the Tree DFS
    codeforces 681D Gifts by the List dfs+构造
    codeforces 678E Another Sith Tournament 概率dp
    codeforces 680E Bear and Square Grid 巧妙暴力
    codeforces 678D Iterated Linear Function 矩阵快速幂
    codeforces 679A Bear and Prime 100 交互
    XTUOJ 1248 TC or CF 搜索
  • 原文地址:https://www.cnblogs.com/hsiehchou/p/10403445.html
Copyright © 2011-2022 走看看