关于Hadoop的思考及分析

思考:hdfs上文件会被切分成block,block有个尺寸(128M),一个单词会不会被切分成两部分分别存储到两个block中?会的话会不会影响数据分析计算的结果?为什么

因为hdfs存放block如果数据量大block标号靠前的文件大小是严格的128M,最后一个block有可能比128M小,所以大部分block都是严格128M,那就有可能把一个单词的数据切分成两部分存储到两个block中 不会影响数据分析计算结果 数据分析map计算的数据加载的单位是split,split是逻辑概念,block是物理的概念,一个split的大部分数据是一个block中的,但当遇到类似单词切分问题的时候就会从另一个block中读取数据补全这个单词单独放在一个split中,而另一个split会忽略不全的单词 这样保证不影响计算结果

1.集群搭建 生产环境常用:ambari、cm(cloudera manager),可视化大数据集群安装、管理、操作、配置、监控系统 这两个管理工具里面集成了一套大数据体系软件:hdfs,yarn,hive,hbase,sqoop,flume,kafka,spark,oozie等,每一个ambari或cm版本都有一套对应的hdfs版本,yarn版本

2.hadoop的概念 hadoop是一套分布式,可靠的,可伸缩的数据存储(HDFS)和数据计算(YARN)软件 它包括如下组件: 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.

3.hadoop的特点

可以存储和计算海量数据

高可靠性

高扩展性,横向扩展架构

高效性,移动计算而不移动存储(缓解io瓶颈)

高容错性

低成本(teradata)

4.hadoop 1.x和2.x的区别

hdfs区别不大 mapreduce 被拆解成 yarn组件和mapreduce编程模型 yarn:分布式计算框架,它用来执行分布式计算程序,包括mr和spark

yarn:ResourceManager、NodeManager mapreduce:JobTracker、TaskTracker

NodeManager和TaskTracker主要负责计算过程的执行,执行进度汇报等任务

JobTracker:

          监控管理集群子节点
          接受mr任务并解析mr的调度分配
          调度task到子节点上去执行,同时还要监听每一个task的执行进度
          资源分配
         (既是集群管理者,又是每一个mr job的管理者)
复制代码

ResourceManager:

               监控管理集群子节点
               接收mr任务,并分配资源把mr解析转交出去
               资源分配和调度
               集群管理者,和资源分配者)
复制代码

5.yarn上运行mapreduce的过程

客户端提交mr job到resourcemanager resourcemanager接收到请求之后再nodemanager上分配初始化一个container,在这个container上运行appmaster appmaster解析job的配置和初始化参数,并解析出需要调度的task数量类型,task运行参数,jar包等信息,然后向resourcemanager申请运行task的资源 resourcemanager根据appmaster的申请在nodemanager上分配container资源,初始化container并把container的调配路径发送给appmaster appmaster把要执行的task发布给nodemanager上的container资源上执行 nodemanager上container中task运行的进度、状态等信息直接向appmaster报告

6.hdfs,hadoop分布式文件系统 特性:存储海量数据文件,大数据文件 容错性,可靠性(使用副本方式实现) 对硬件的要求不高

普通服务器数据容错用,磁盘raid,热备份

7.hdfs的角色

namenode:

        集群主节点(管理子节点)
        接受客户端的读写请求
        负责元数据的管理(文件、文件夹的名称和层级结构,文件的大小,文件创建者,创建时间,访问权限
        ,文件的分块数,每一个分块的位置信息并不保存在namenode的元数据文件中,但是运行中的
        namenode内存中是由这部分数据)
        副本策略的执行
        集群子节点数据均衡操作:hadoop下有balance指令,使用指令来运行
        
        单节点故障:双机热备,HA(高可用)
        namenode单节点硬件资源配置瓶颈:联邦机制Federation
        /
        /n1/...
        /n2/...
复制代码

datanode:

        启动时自检本节点存储的block信息,并把这些信息报告给namenode
        数据的具体存储
        数据读写操作的执行
        副本数据的传输保存
复制代码

secondarynamenode:

                 负责namenode的edits和fsimage的合并过程的执行
                 同时保存一份合并后最新的fsimage数据的冷备份
复制代码

扩容

割接

8.hdfs的缺点

数据访问延时高,不适用于低延时的数据操作服务(可使用hbase) 不适合大量小文件的存储(使用avro或者sequencefile的方式把小文件合并成大文件,把文件数据保存到hbase) 不支持随机修改,只支持追加(可使用hbase) 不支持并发写入,一个文件只能由一个客户端执行写操作(可使用hbase)

10.hdfs的访问控制,和linux文件系统一致

11.安全模式

hdfs启动时,加载完fsimage和edits之后以及接收datanode汇报block位置元数据的过程中,hdfs会进入安全模式,只提供读不提供写服务,当所有元数据加载准备操作执行结束后自动退出安全模式。 指令退出进入安全模式的操作: hdfs dfsadmin -safemode leave

12.hdfs的常用指令:上网搜

13.windows上hadoop common的安装

解压

添加环境变量:

             HADOOP_HOME指向解压目录
             把解压目录的bin目录放到path中
复制代码

hadoop.dll拷贝到windows/system32/ 目录下这个主要是影响mr程序在window上的本地运行

14.hdfs的api操作:读写,上传、下载、修改、删除、更改访问权限、更改拥有者拥有组

1创建java的maven项目

2添加依赖:

<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>2.8.3</version>
</dependency>
复制代码

3添加配置文件:core-site.xml

4创建java代码

创建Configuration对象
创建FileSystem对象
复制代码

5调用api方法

             创建FSDataOutputStream来进行写操作
             创建FSDataInputStream来进行读操作
             FileStatus文件元数据信息操作类
复制代码

16.mapreduce的执行过程

map节点: 对输入文件进行split----》对split的数据进行加载和读取,通过InputFormat把数据读取成KV对----》进入map算子 reduce节点: ----》把数据以KV的形式传输到reduce节点----》排序合并形成新的KV----》redcue算子----》OutputFormat把数据输出

从map算子执行结束到reduce算子执行开始这中间的过程被称为shuffler,shuffler是一个比较消耗资源的过程,因为过程中包含网络IO和磁盘IO的过程

map算子执行的输出----》map节点的内存缓冲区----》当内存缓冲区中的数据量达到阈值的时候----》kv对会溢写到map节点的磁盘上,一次溢写一个文件在写这个文件的过程中会对数据进行分区(打分区标识)和排序----》当map任务执行结束之后,会把溢写的多个文件进行合并成一个文件----》reduce启动回到每一个map节点把所有属于自己reduce节点的kv数据抓取到reduce节点上----》会把抓取过来的数据进行按照Key排序并且合并-----》进入reduce算子

使用mr对数据进行统计计算,关键点在于根据需求来选择适当key和value

转载于:https://juejin.im/post/5c524e51e51d45527201e654

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值