![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Hadoop
谦卑t
终身学习
展开
-
【 图文跟进】利用 eclipse 查看 hdfs 集群的文件信息
1、 下载一个 eclipse 开发工具 eclipse-jee-luna-SR1-win32-x86_64.zip2、 解压到一个文件夹 C:\myProgram\eclipse3、 把 hadoop-eclipse-plugin-2.6.5.jar 放入到 eclipse/plugins 文件夹下4、 双击启动 eclipse 5、 将” windows 平台编译 ha...原创 2018-11-09 19:31:21 · 533 阅读 · 0 评论 -
【图文解析 】MapReduce 程序运行演示 ——hadoopd第二核心组建!
在 MapReduce 组件里,官方给我们提供了一些样例程序,其中非常有名的就是 wordcount 和 pi 程序。这些 MapReduce 程序的代码都在 hadoop-mapreduce-examples-2.6.4.jar 包里,这 个 jar 包在 hadoop 安装目录下的/share/hadoop/mapreduce/目录里 下面我们使用 hadoop 命令来试跑例子程序,看看...原创 2018-11-14 08:24:56 · 291 阅读 · 0 评论 -
【图文解析 】MapReduce 示例程序编写及编码规范
上一步,我们查看了 WordCount 这个 MapReduce 程序的源码编写,可以得出几点结论:1、 该程序有一个 main 方法,来启动任务的运行,其中 job 对象就存储了该程序运行的必要 信息,比如指定 Mapper 类和 Reducer 类 job.setMapperClass(TokenizerMapper.class); job.setReducerClass(IntSumRe...原创 2018-11-14 10:48:04 · 824 阅读 · 0 评论 -
【图文解析 】MapReduce 运行方式及 Debug
MapReduce 程序运行方式: 本地运行模式:Eclipse 开发环境下本地运行,好处是方便调试和测试 要点一:MapReduce 程序是被提交给 LocalJobRunner 在本地以单进程的形式运行 要点二:数据输入输出可以在本地,也可以在 HDFS 要点三:怎么实现本地运行?在你的 MapReduce 程序当中不要带集群的配置文件(本 质...原创 2018-11-14 15:44:58 · 418 阅读 · 0 评论 -
【图文解析 】MapReduce 多 Job 串联
MapReduce 多 Job 串联 1、需求 一个稍复杂点的处理逻辑往往需要多个 MapReduce 程序串联处理,多 job 的串联可以借助 MapReduce 框架的 JobControl 实现 2、实例 以下有两个 MapReduce 任务,分别是 Flow 的 SumMR 和 SortMR,其中有依赖关系:SumMR 的输出是 SortMR 的输入,所以 SortMR 的启动得在...原创 2018-11-16 20:03:06 · 373 阅读 · 0 评论 -
【图文解析 】TopN 算法实现-自定义 GroupComparator
TopN 算法实现-自定义 GroupComparator 1、需求 在统计学生成绩的小项目中,现在有一个需求: 求出每个班参考学生成绩最高的学生的信息,班级,姓名和平均分 2、分析 利用“班级和平均分”作为 key,可以将 map 阶段读取到的所有学生成绩数据按照班级 和成绩排倒序,发送到 reduce 在 reduce 端利用 GroupingComparator 将班级相同的 k...原创 2018-11-16 20:08:09 · 478 阅读 · 0 评论 -
【图文解析 】MapReduce 全局计数器
MapReduce 全局计数器 1、介绍 计数器是用来记录 job 的执行进度和状态的。它的作用可以理解为日志。我们可以在程序的 某个位置插入计数器,记录数据或者进度的变化情况。 MapReduce 计数器(Counter)为我们提供一个窗口,用于观察 MapReduce Job 运行期的 各种细节数据。对 MapReduce 性能调优很有帮助,MapReduce 性能优化的评估大部分...原创 2018-11-16 20:12:28 · 290 阅读 · 0 评论 -
【图文解析 】MapJoin-DistributedCache 应用
1、MapReduce Join 介绍 在各种实际业务场景中,按照某个关键字对两份数据进行连接是非常常见的。如果两份数据 都比较小,那么可以直接在内存中完成连接。如果是大数据量的呢?显然,在内存中进行连 接会发生 OOM。MapReduce 可以用来解决大数据量的链接 MapReduce 的 Join 操作主要分两类:MapJoin 和 ReduceJoin 先看 ReduceJoi...原创 2018-11-16 20:20:54 · 201 阅读 · 0 评论 -
【图文详细 】MapReduce 中的 Combiner
1、什么是 Combiner Combiner 是 MapReduce 程序中 Mapper 和 Reducer 之外的一种组件,它的作用是在 maptask 之后给 maptask 的结果进行局部汇总,以减轻 reducetask 的计算负载,减少网络传输 2、如何使用 Combiner Combiner 和 Reducer 一样,编写一个类,然后继承 Reducer,reduce 方法中写...原创 2018-11-16 20:29:02 · 656 阅读 · 0 评论 -
【图文详细 】MapReduce 中的序列化
1、概述 Java 的序列化是一个重量级序列化框架(Serializable),一个对象被序列化后,会附带很多额 外的信息(各种校验信息,header,继承体系等),不便于在网络中高效传输;所以,Hadoop 自己开发了一套序列化机制(参与序列化的对象的类都要实现 Writable 接口),精简,高效 Hadoop 中的序列化框架已经对基本类型和 null 提供了序列化的实现了。分别是: ...原创 2018-11-16 20:33:42 · 1302 阅读 · 0 评论 -
【图文详细 】MapReduce 中的 Sort
需求:把上例求得的流量综合从大到小倒序排 基本思路:实现自定义的 bean 来封装流量信息,并将 bean 作为 map 输出的 key 来传输 MR 程序在处理数据的过程中会对数据排序(map 输出的 kv 对传输到 reduce 之前,会排序), 排序的依据是 map 输出的 key,所以,我们如果要实现自己需要的排序规则,则可以考虑将 排序因素放到 key 中,让 key 实现接口:W...原创 2018-11-16 20:34:58 · 507 阅读 · 0 评论 -
【图文解析 】hdfs的优缺点,昼夜无眠可算想出来了!
优点: 可构建在廉价机器上 通过多副本提高可靠性,提供了容错和恢复机制 高容错性 数据自动保存多个副本,副本丢失后,自动恢复 适合批处理 移动计算而非数据,数据位置暴露给计算框架 适合大数据处理 GB、TB、甚至 PB 级数据,百万规模以上的文...原创 2018-11-08 19:30:52 · 146 阅读 · 0 评论 -
hdfs的使用【图解】
Hadoop 启动一个hadoop的客户端查看目录结构*只有绝对路劲的访问方式创建目录文件上传两种方式需要注意:文件输上传的时候给定的hdfs的路径是一个存在的目录,则会上传到这个目录下,名字是源文件的名文件上传的时候给定的hdfs的路径是不存在的,就会认为给的路劲的最后一级路径是文件名,对本地文件进行重命名2....原创 2018-11-08 17:57:34 · 1144 阅读 · 0 评论 -
【 图解析】HDFS的设计思想
这个大小可以手动配置:默认配置项:<property> <name>dfs.bloksize</name> <value>134217728</value></property>如果需要修改这个值: 在hdfs-site.xml 添加:&l...原创 2018-11-08 13:22:47 · 236 阅读 · 0 评论 -
【图文跟进 】搭建开发环境,添加利用 HDFS 的 api 编写业务代码所依赖的 jar 包
可以有两种方式:第一种:建立普通 java 工程,加入操作 hdfs 的 jar 包 1、 按键 ctrl + N 搜索 java project 建立普通 java 工程,如图所示: 2、 输入项目名字,点击确定,生成一个普通 java 工程注意:建议大家使用jdk的版本和linux服务上的jdk版本一致。在这儿我选择的都是jdk1.7 的大版本 3、 加入依赖 jar,...原创 2018-11-09 19:39:00 · 602 阅读 · 0 评论 -
【图文跟进 】HDFS常用Java API代码演示
1、 建立文件夹2、 上传文件 3、 下载文件 4、 删除文件或者文件夹 5、 重命名文件或者文件夹 6、 查看目录信息,只显示该文件夹下的文件信息 7、 查看文件及文件夹信息 ...原创 2018-11-09 19:45:15 · 123 阅读 · 0 评论 -
【图文解析 】HDFS中各个角色的功能
1.namenode:接收客户端的读写请求 存储元数据信息 接收datanode的心跳报告 负载均衡 分配数据块的存储节点2.datanode:真正处理客户端的读写请求 向namenode发送心跳 向namenode发送块报告 真正的数据存储 副本之间的相互复制3.secondarynamenode:备份元数据信息 帮助namenode进行元数据合并 减轻nam...原创 2018-11-12 22:27:53 · 5988 阅读 · 0 评论 -
【图文跟进 】HADOOP 核心设计——心跳机制
心跳机制(没有耐心看完,你也不配学会!)1.心跳机制(heart+beat)问题1:hdfs集群中namenode负载管理所有的datanode,namenode如何管理?问题2:怎么获取datanode存活的状况的?解析:通过心跳策略获取的,datanode在集群运行的过程中会定期的向namenode发送自己的心跳报告,目的是报告namenode自己的存活状态。心跳报告的周期...原创 2018-11-10 19:39:52 · 777 阅读 · 1 评论 -
【图文跟进 】HADOOP 核心设计——机架存放策略(副本存放策略)
机架策略——副本存放策略(带着问题学习,才高效)问题1:在hdfs中对于一个block默认的存储副本个数3个,这3个副本如何存放的?解析:三个副本存储在3个不同的节点上,事实上在实际生产的时候,节点在机架上的,在存放副本的时候考虑机架的问题 作用数据分块存储和副本的存放,是保证可靠性和高性能的关键 方法将每个文件的数据进行分块存储,每一个数据块又保存有多个副本,这...原创 2018-11-10 19:56:34 · 686 阅读 · 0 评论 -
【图文跟进 】HADOOP 核心设计——负载均衡
问题一:什么时候负载时均衡的呢?解析:hdfs集群中的每一个datanode上的存储的数据和自己的硬件占比是相当的,这个时候我们可以认为这个hdfs集群是负载均衡的问题二:有没有可能造成从节点负载不均衡?解析:集群的运行过程中,有可能造成集群中的从节点的负载不均衡,如果集群规模比较小的时候,集群有自动负载均衡的能力,集群会自己在一段时间之后,达到相对的负载均衡 集群实现负载均衡...原创 2018-11-10 20:16:38 · 241 阅读 · 0 评论 -
【图文跟进 】HADOOP 核心设计——安全模式
集群的安全模式是集群的一个自我保护的一种模式,在集群的安全模式下不允许用户对集群进行部分操作的。集群什么时候会进入安全模式:1)集群启动的时候,集群会自己进入安全模式集群启动过程中做的事情? 启动顺序: 1)namenode 2)datanode 3)secondarynamenode 启动namenode的时候做的事情: na...原创 2018-11-10 20:24:49 · 187 阅读 · 0 评论 -
【图文解析 】HDFS 写数据流程
概述客户端要向 HDFS 写数据,首先要跟 namenode 通信以确认可以写文件并获得接收文件 block 的 datanode,然后,客户端按顺序将文件逐个 block 传递给相应 datanode,并由接收到 block 的 datanode 负责向其他 datanode 复制 block 的副本 1、 client 发写数据请求 2、 namenode 相应请求,然后做一系列校验...原创 2018-11-10 20:27:03 · 147 阅读 · 0 评论 -
【图文解析 】集群安装中遇到的问题
集群安装中遇到的问题1.先停(配置文件问题)配置文件标签缺失格式化报错:Xml解析报错,后面是目录,44行,第一列错误,你的xml文档结构开始和结束必须要用相同的标签。*解决方案:到对应的配置文件中检查错误,并且重新格式化 先发到03,再发到02,格式也相同 2.格式化问题为什么成功的格式化只能做一次?格式化的时候实质上是...原创 2018-11-10 20:43:34 · 130 阅读 · 0 评论 -
Hadoop集群安装四大模式
集群的安装模式: 1.单机模式:只需要解压即可用,没有分布式的文件系统,也没有namenode datanodeSecondar等,文件系统就是linux/widows的本地文件系统。用于:代码调试 2.伪分布式:有相关的hdfs或yarn的进程,这些进程全部在一个节点,存在分布式的文件系统的,只不过一个上的特点:搭建比较简单,容易上手用途:个人学习...原创 2018-11-08 13:18:01 · 238 阅读 · 0 评论 -
【图文详细 】MapReduce 中的 Partitioner
需求:根据归属地输出流量统计数据结果到不同文件,以便于在查询统计结果时可以定位到 省级范围进行 思路:MapReduce 中会将 map 输出的 kv 对,按照相同 key 分组,然后分发给不同的 reducetask 默认的分发规则为:根据 key 的 hashcode%reducetask 数来分发,所以:如果要按照我们自 己的需求进行分组,则需要改写数据分发(分组)组件 Partiti...原创 2018-11-16 20:37:13 · 265 阅读 · 0 评论