hadoop学习日志

以此文记录一下我的大数据学习过程。
在学习hadoop生态系统之前,我首先阅读了二十余篇的国内外大数据相关论文,看了清华大学的大数据慕课,对大数据领域有了初步的认识。

首先直接进行总结:hadoop生态系统的入门是从最基本的框架hadoop开始学习的,hadoop学习了解的主要组件包括yarn(资源调度)、MapReduce(核心并行计算框架)、HDFS(分布式文件系统)。学习主要包括了原理学习和实操学习,入门player比较困难的第一个门槛就是环境搭建。在搭建完成环境后,了解了一些集群环境的(linux端)操作,然后在eclipse上临摹了一些代码,进一步学习了一些理论上的知识。原理学习主要是框架核心组件的概念、思想、机制(包括shuffle、切片等)等。
在Hadoop学习完之后,给我感觉的使用方法是:在windows端用eclipse(编译器)写一些代码,然后打包到linux集群运行,实现离线计算。
在hadoop学习结束后,看了一些基于hadoop的xxx论文。目前打算是顺序地继续Zookeeper、HBase、Hive、Spark的学习。
在这里插入图片描述

hadoop生态系统的入门从hadoop框架开始。学习是跟着视频学习的,以此文简单记录一下学习知识。hadoop学习需要有一些linux、java基础。

在开始学习之前,推荐对大数据学术史上知名的三篇论文进行阅读。这三篇论文也相当于Hadoop中核心组件的原型。
在这里插入图片描述
在对hadoop进行基础原理进行了解之后,开始进行hadoop的环境搭建。环境搭建包括本地、伪分布式、完全分布式。一般学习的机器配置足够的话可以直接进行完全分布式的搭建。

在完全分布式的学习环境搭建完成后,集群中有三台机器。通过一些端口,通过一些常用端口可以查看与hadoop运行状态相关的网页。
在这里插入图片描述
在这里插入图片描述

在linux端对完全分布式的学习中,还包括集群常用操作、ssh免密登录、集群时间同步等知识。
在学习中,提到了最好需要对hadoop源码进行编译。
为什么最好要重新编译一遍?有说在64位机上,32位的hadoop不好发挥优势。(是错误的)
编译时生成.os文件,可以让hadoop发挥出所有的功能。os文件和dll文件一样,是一个动态链接库。如下图所示。需要编译生成这个动态链接库,以实现所有功能(使hadoop的本地实现可用)。
从我的理解,简单来说,需要编译一遍是hadoop本身的特性。 但没有编译好的包而自己进行编译是很复杂的,我没有编译目前使用也没什么问题。
在这里插入图片描述
在搭建完成集群和集群操作学习之后,开始HDFS的学习。HDFS如其名,是Hadoop的文件系统。首先进行HDFS理论与操作学习,包括block、shell命令、(linux上的)客户端操作、NN与2NN、DataNode等等。
然后学习HDFS的API操作(windows上),学习到这一步时我回头学了一些maven知识。可以在eclipse环境下编写java代码,连接hadoop集群,对HDFS进行一些操作。
在这里插入图片描述

之后进行MapReduce的学习。
一如既往的,首先是概念、思想、原理的学习。之后在eclipse环境下编写了一些MR代码。下面是一个wordcount案例的代码。
在这里插入图片描述
代码是可以在windows上运行的。可以通过maveninstall打包成jar包,然后上传至linux机器中进行集群中的运行。
在这里插入图片描述
wordcount案例是最基本的一个实操案例。之后做了一些其他的案例和一些深层一点点的原理的学习。之后的写的比较粗糙比较乱,在我的脑海中更像是加深一些抽象的影响,在生涯以后的大数据学习中应该会逐渐温习、巩固。
在这里插入图片描述

序列化概念;序列化案例:计算手机流量的上传、下载之和。本案例序列化一个Bean对象,根据要求执行MR操作。
切片机制与MapTask并行度。
InputFormat:在选用不同的InputFormat时可以针对不同情况,简化操作。自定义InputFormat可以针对地处理不同的文件格式。案例采用自定义InputFormat对文件进行了整合(自定义KV然后将KV写入context,实现小文件的整合),和Har归档小文件比较类似。
shuffle机制原理学习。
Shuffle机制(MR之间)之分区案例:实现按照要求输出到不同的独立文件。
在这里插入图片描述
Shuffle机制(MR之间)之排序:在MR之间对数据进行排序(默认按照Key字典排序)。
在这里插入图片描述

案例:全排序,对结果输出的数据按要求进行排序。结果如下所示。
在这里插入图片描述
案例:结合上两个案例(分区、排序),自定义类继承Partitioner,实现分区排序。
debug思想,如何打断点、有效debug mr代码。
combiner案例:Combiner是MR程序中Mapper和Reduce之外的一种组件,可以看做一个减少IO的优化组件。作用是对Map输出的结果先进行一次合并。
分组排序案例:实现根据不同批商品价格数据,找到每批数据中单品最高的价格。结果如下图。
在这里插入图片描述
OutputFormat:和InputFormat类似,控制的是输出格式和输出路径。
案例:实现根据网站不同,输出结果归分到不同文件中。
在这里插入图片描述
Join案例:map/reduce join。在map/reduce阶段实现join方法。实现根据produce_id进行合并。
在这里插入图片描述
在这里插入图片描述
数据清洗案例:在Map阶段对data的日志数据进行数据清理。

压缩、小文件处理、MR运行优化、yarn等一些其他知识。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值