从零开始学习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 ( ...
随机推荐
- RTMP协议详解(转)
转自<RTMP协议详解(一) (二) (三) > Real Time Messaging Protocol(实时消息传送协议协议)是Adobe Systems公司为Flash播放器和服务器 ...
- 如何寻找设计灵感?写给刚入行的设计师(转自UI中国)
如何寻找设计灵感?写给刚入行的设计师 如何寻找设计灵感? 这一次的文章,我想和大家聊聊年轻的设计师在没有那么多经验的情况下如何寻找设计师灵感.(希望这篇文章也能帮助感同身受的你) 每个设计师对设计都有 ...
- jsp防盗链代码
// 禁止缓存 response.setHeader("Cache-Control", "no-store"); response.setHeader( ...
- Hibernate管理Session和批量操作
Hibernate管理Session Hibernate自身提供了三种管理Session对象的方法 Session对象的生命周期与本地线程绑定 Session对象的生命周期与JTA事务绑定 Hiber ...
- Linux 中直接 I/O 机制的介绍
https://www.ibm.com/developerworks/cn/linux/l-cn-directio/ 对于传统的操作系统来说,普通的 I/O 操作一般会被内核缓存,这种 I/O 被称作 ...
- .NET Remoting
.NET Remoting .NET Remoting是微软早期的分布式通信技术,虽然微软后来通过WCF通用基础通信框架整合掉了,但是通过回顾学习Remoting,反过来学习理解WCF也是很有帮助 ...
- Android入门:用HttpClient模拟HTTP的GET和POST请求
一.HttpClient介绍 HttpClient是用来模拟HTTP请求的,其实实质就是把HTTP请求模拟后发给Web服务器: Android已经集成了HttpClient,因此可以直接使用: ...
- MyGeneration 数据库驱动为空
重做系统后安装了MyGeneration 但是安装完成后发现驱动中没有驱动信息,查了下网上的解决方案发下下面的可以完美解决,特作备忘: The problem is because of multi ...
- iframe 透明
iframe是迫不得已才使用的,因为使用iframe会带来较多的问题,而有的浏览器可以设置将iframe当作广告屏蔽. 在最近的一个工作内容中使用了iframe,开始遇到的问题是iframe高度自适应 ...
- python测试基于websocket协议的即时通讯接口
随着html5的广泛应用,基于websocket协议的即时通讯有了越来越多的使用场景,本文使用python中的websocket-client模块来做相关的接口测试 import webclient ...