从零开始学习Hadoop--前言
Hadoop是最著名使用最广泛的分布式大数据处理框架,它是用Java开发的。
这本书有一个明确的目标:只要有一台能上网的计算机,就可以让读者在最短的时间内,学会Hadoop的初级开发。所以,这本书只讲干货,也就是必须要知道的Hadoop的最核心知识点,包括如何搭建Hadoop,如何写代码,如何查API。对于更多细节问题,书后会列一个书目给大家参考,这些书已经讲得很好了,不需要在这里饶舌浪费时间。
这本书对读者的预要求很少:懂一点点Linux,懂一点点Java编程。“懂一点点Linux”是指,假如有一台装了Linux操作系统的计算机,能做到开机,输入密码,进入图形界面,打开命令终端,就可以了。“懂一点点Java编程”是指,在Linux上,用记事本写一个Java的HelloWorld程序,然后把它编译出来,执行一下,就可以了。这个预要求非常低,接近于零,所以这本书叫“从零开始学习Hadoop”。Hadoop是用Java开发的,它通过Streaming方式支持其他语言,诸如Python,C++,Ruby,但如果想真正理解Hadoop,必须从Java开始,用其他语言以Streaming方式学Hadoop是一条不归路,这是笔者用一个月时间得来的教训。
“只要有一台能上网的计算机”,Hadoop的伪分布式运行模式,可以在一台电脑上运行Hadoop的全部功能。在伪分布式下编写和运行的代码,不作任何修改便能运行在Hadoop集群上,这是学习Hadoop的最方便的优点之一。
“最短的时间”,这是一个有点长的话题。学习一项技能,有很多种途径。最快的途径找个高手教,高手会说看哪些书,从哪里做一下,哪些地方注意不要犯错,哪些地方是不需要的不要在上面浪费时间,哪些地方很关键要多做做将来会很有用。只要没有出现诸如高手数量不多,或者高手很忙,或者高手是同事但职位只比你高一点点—教会你对他其实没什么好处的这些情况之外,这个途径是最好的。
另外一个途径是报一些培训班学习,费用相对高一些。
性价比最高的途径是自学,如果自学能力比较强,从网上找相关的电子书教学视频官方教程学习,笔者个人比较推崇这种方式,这种方式可以很好地锻炼学习能力。能力是一得永得的,将来学习其他技能可以举一反三,缺点是比较耗时,自学的过程其实很大程度上是试错的过程。如果技术比较复杂,而且工作中很快要用到,或者下个星期就要面试笔试,那肯定是妥妥地来不及的。
如何在最短的时间内解决Hadoop入门问题呢?理性的方式,是从流程和细节上解决。1898年,科学管理之父泰勒做了一个铁块搬运实验。当时,工人们每天平均搬运12~13吨铁块。泰勒的实验方式是对搬运过程计时,分析不同搬运方式的影响,分析休息时间和劳动时间的搭配,最终可以让工人在不太累的情况下,每天搬运47吨铁块,效率提高到近4倍。
事实上,可以用同样的方式解决学习问题。比如说,请一个对Hadoop一无所知的小白同学自学Hadoop,然后要求他记下每天学了哪些内容,遇到什么问题,是怎么解决的,分别花了多少时间,有哪些是必须的,有哪些后来验证是弯路,哪些可以省略。待到他学完了,根据这个学习记录整理出一条快捷之路,避开没用的地方,简化过于复杂的地方,调整到合理的次序,于是就得到一个“最短的时间”学习方案。这本书就是这么产生的,而且是真简化。
“做一遍”是最佳的快速学习方式。比如说,学习C语言编程,如果学习方式是看书,读一遍乃至读十遍,不写代码,不会在大脑留下任何痕迹。如果将书中的例题代码原样输入编译执行,理解会好很多。如果不但调通了例题,而且将书里的大部分习题独立做出来,会觉得自己对C语言很熟悉。如果写了一个有质量的五千到一万行的项目,就觉得自己真的可以用C语言做工作。所以说,做一遍是最好的学习方式。
笔者见过一些高效的人是以反其道而行之的方式学习的。当他们需要用到一种新技术的时候,就找一本相关的书,看一下目录,再看一下每章的简介,大略看看范例。然后,根据范例立刻写代码,需要什么功能,就到书里和API里找,如果遇到Bug,在Google上检索一下。这种方式会很快做完功能,同时也就学会这个技术。如果从头开始看书,一点一点做例题做习题,对他们来说太慢了,时间成本太高,很不划算。
还有另外一种方式,笔者将它称之为吉祥物大师法(MasterMascot),注意,不要看成吉祥物大法师。一些有趣的技术公司会给自己设计吉祥物玩具。假如员工在工作中遇到解决不了的问题,按照“潜规则”,要先把这个问题讲给吉祥物玩具听,多数情况下讲完了自己就知道答案了,这就是吉祥物大师法。
这本书的例子,是按照“做一遍”的方式编写的。每个例子都是完整的,从目录和文件结构,到编译打包运行。这种完整很重要,可以大幅度减少试错,查询API,编译和调试的时间。熟悉这些范例,先手工输入和编译,然后再合上书,自己从零开始做一遍,对着代码找感觉和体会。
尤其非常重要的是,要想象如果自己是Hadoop的作者,会怎么设计Hadoop,用这种眼光审视Hadoop,会突然之间“开悟”,原来如此。这种“开悟”,要自己走过一遍,想过一遍,做过一遍,才会达到。一旦“开悟”了,会信心满满,应对这个体系架构的诸多问题,会漂亮地解决未知问题,就像厨师做一道好菜,像浪子泡MM。这种书有点像武侠小说里金世遗练的邪派功夫,简单,见效快,但见效之后要补上一些细节,免得走火入魔。所谓走火入魔就是觉得Hadoop如此简单,没什么搞头,其实Hadoop真的是很有搞头。
如果你对Java很熟悉,对Linux很熟悉,这本书对你来说太简单了,只需要一个下午就能搞定。Hadoop很大,但大部分东西都是在Linux出现过。你只需要安装它,然后手写一下例题,编译,运行,然后去看看Hadoop的API,就足够了。
未来将根据这本书发布一系列的视频,更为直观。本书的理念是让零起点的读者根据这本书能在一个星期或者更短的时间内学会Hadoop的初步技能,快速让大家安装Hadoop,快速跑一个Hadoop的Demo,快速了解Hadoop的运行流程,写一些初级的Hadoop的应用,以应对诸如快速开发,面试笔试,大数据课程实践等需求。如果需要掌握更多的Hadoop细节,请参考本书的推荐书目,或者关注“最短路径系列”的未来书目。
从零开始学习Hadoop--前言的更多相关文章
- 【从零开始学习Hadoop】--2.HDFS分布式文件系统
1. 文件系统从头说2. Hadoop的文件系统3. 如何将文件复制到HDFS3.1 目录和文件结构3.2 FileCopy.java文件的源代码3.3 编译3.4打包3.5 运行3.6 检查结果 1 ...
- 【从零开始学习Hadoop】--1.Hadoop的安装
第1章 Hadoop的安装1. 操作系统2. Hadoop的版本3. 下载Hadoop4. 安装Java JDK5. 安装hadoop6. 安装rsync和ssh7. 启动hadoop8. 测试had ...
- 大数据学习之旅2——从零开始搭hadoop完全分布式集群
前言 本文从零开始搭hadoop完全分布式集群,大概花费了一天的时间边搭边写博客,一步一步完成完成集群配置,所以相信大家按照本文一步一步来完全可以搭建成功.需要注意的是本文限于篇幅和时间的限制,也是为 ...
- 从零开始学习jQuery (五) 事件与事件对象
本系列文章导航 从零开始学习jQuery (五) 事件与事件对象 一.摘要 事件是脚本编程的灵魂. 所以本章内容也是jQuery学习的重点. 本文将对jQuery中的事件处理以及事件对象进行详细的讲解 ...
- 从零开始学习jQuery (四) 使用jQuery操作元素的属性与样式
本系列文章导航 从零开始学习jQuery (四) 使用jQuery操作元素的属性与样式 一.摘要 本篇文章讲解如何使用jQuery获取和操作元素的属性和CSS样式. 其中DOM属性和元素属性的区分值得 ...
- 从零开始学习jQuery (三) 管理jQuery包装集
本系列文章导航 从零开始学习jQuery (三) 管理jQuery包装集 一.摘要 在使用jQuery选择器获取到jQuery包装集后, 我们需要对其进行操作. 本章首先讲解如何动态的创建元素, 接着 ...
- 从零开始学习jQuery (二) 万能的选择器
本系列文章导航 从零开始学习jQuery (二) 万能的选择器 一.摘要 本章讲解jQuery最重要的选择器部分的知识. 有了jQuery的选择器我们几乎可以获取页面上任意的一个或一组对象, 可以明显 ...
- 从零开始学习jQuery (一) 入门篇
本系列文章导航 从零开始学习jQuery (一) 入门篇 一.摘要 本系列文章将带您进入jQuery的精彩世界, 其中有很多作者具体的使用经验和解决方案, 即使你会使用jQuery也能在阅读中发现些 ...
- 从零开始学习jQuery(转)
本系列文章导航 从零开始学习jQuery (一) 开天辟地入门篇 从零开始学习jQuery (二) 万能的选择器 从零开始学习jQuery (三) 管理jQuery包装集 从零开始学习jQuery ( ...
随机推荐
- 总结mysql服务器查询慢原因与解决方法
本文针对MySQL数据库服务器查询逐渐变慢的问题, 进行分析,并提出相应的解决办法,具体的分析解决办法如下: 会经常发现开发人员查一下没用索引的语句或者没有limit n的语句,这些没语句会对数据库造 ...
- 如何合并IP网段
1. 安装IPy pip3 install IPy 2. 写脚本: yuyue@workplace:~ $ cat combine_ip.pyfrom IPy import IPSet, IPimpo ...
- Java SE 6 新特性: Java DB 和 JDBC 4.0
http://www.ibm.com/developerworks/cn/java/j-lo-jse65/index.html 长久以来,由于大量(甚至几乎所有)的 Java 应用都依赖于数据库,如何 ...
- UI篇--android实现底部按钮布局
1.采用LinearLayout布局: <LinearLayout android:id="@+id/main" android:layout_width="fil ...
- word编号库中找不到带圈编号“①②③......"了怎么办?
进入“Word选项/语言”对话框: 找到“朝鲜语”并将它添加到编辑语言的列表框中,无需设置为启用状态或默认编辑语言: 退出并重新启动Word: 再次打开“定义新编号格式”对话框则可以在“编号样式”下拉 ...
- qt集成到vs2010
因为要正式开始学习图形处理相关的知识了,所以要搭建开发平台.我所要用到的平台主要是vs和qt.虽然现在已经出了vs2013了,并且外观看起来特别漂亮,但是我所要用到的qt4版本中,没有对于的qtAdd ...
- offsetWidth、offsetleft 等图文详解
网页可见区域宽: document.body.clientWidth;网页可见区域高: document.body.clientHeight;网页可见区域宽: document.body.offset ...
- Android与Mysql服务器通信
需求:在手机端读取蓝牙传输过来的数据,然后发送到mysql 安卓前期版本可以直接使用mysql connector, 现在只能通过访问url传递数据了. 服务器端写php脚本,接受发送过来的url请求 ...
- 使用Async同步执行异步函数
为了适应异步编程,减少回调的嵌套,我在项目中引入了Async,当批量处理且需要同步执行一些逻辑相同的异步函数时,觉得还是Async最为靠谱. 我有一个类似下面代码的场景,依据数组中的每一个元素执行一个 ...
- 1分钟内检查Linux服务器性能的10条命令
如果你的Linux服务器突然负载暴增,告警短信快发爆你的手机,如何在最短时间内找出Linux性能问题所在?Netflix性能工程团队的Brendan Gregg写下了这篇博文,来看他们是怎样通过十条命 ...