《Hadoop权威指南》读书笔记

第1章 初识Hadoop

MapReduce 尽量在计算机节点上存储数据,以实现数据的本地快速访问。

数据本地化特性是MapReduce的核心特征。

第2章  关于MapReduce

Hadoop本身提供了一套可优化网络序列化传输的基本类型,而不是直接使用Java内嵌的数据。这些类型都在org.apache.hadoop.io包中。

LongWritable类型(相当于Java的Long类型)

Text类型(相当于Java中的String类型)

IntWritable类型(相当于Java的Integer类型)

 

Job对象指定作业执行规范:

// Create a new Job
*     Job job = Job.getInstance();
*     job.setJarByClass(MyJob.class);
*     
*     // Specify various job-specific parameters     
*     job.setJobName("myjob");
*     
*     job.setInputPath(new Path("in"));
*     job.setOutputPath(new Path("out"));
*     
*     job.setMapperClass(MyJob.MyMapper.class);
*     job.setReducerClass(MyJob.MyReducer.class);
*
*     // Submit the job, then poll for progress until the job is complete
*     job.waitForCompletion(true);

为了实现横向扩展,我们需要把数据存储在分布式文件系统中,一般为HDFS,由此允许Hadoop将MapReduce计算转移到存储有部分数据的各台机器上。

有两类节点控制着作业执行过程:一个jobtracker及一系列tasktracker。jobtracker通过调度tasktracker上运行的任务来协调所有运行在系统上的作业。tasktracker在运行任务的同时将运行进度报告发送给jobtracker , jobtracker由此记录每项作业任务的整体进度情况。如果其中一个任务失败,jobtracker可以在另一个tasktracker节点上重新调度该任务。

Hadoop允许用户针对map任务的输出指定一个combiner(就像mapper和reducer一样)

第3章  Hadoop分布式文件系统

HDFS以流式数据访问模式来存储超大文件,运行于商用硬件集群上。

HDFS同样也有块的概念,但是大很多,默认为64MB。与单一磁盘上的文件系统相似,HDFS上的文件也被划分为块大小的多个分块(chunk),作为独立的存储单元。但与其他文件系统不同的是,HDFS中小于一个块大小的文件不会占据整个块的空间。

HDFS集群有两类节点以管理者-工作者模式运行,即一个namenode(管理者)和多个datanode(工作者)。

datanode是文件系统的工作节点。他们根据需要存储并检索数据块(受客户端或namenode调度),并且定期向namenode发送它们存储的块的列表。

namenode在内存中保存文件系统中每个文件和每个数据块的引用关系,这意味着对一个拥有大量文件的超大集群来说,内存将成为限制系统横向扩展的瓶颈。

 

namenode告知客户端每个块中最佳的datanode,并让客户端直接连接到该datanode检索数据。由于数据流分散在集群中的所有datanode,所以这种设计能使HDFS可扩展到大量的并发客户端。同时,namenode只需要响应块位置的请求,无需相应数据请求,否则随着客户端数量的增长,namenode会很快成为瓶颈。

 

第4章  Hadoop的I/O操作

datanode负责在收到数据后存储该数据及其验证校验和。它在收到客户端的数据或复制其他datanode的数据时执行这个操作。正在写数据的客户端将数据及其校验和发送到由一系列datanode组成的管线,管线中最后一个datanode负责验证校验和。

客户端从datanode读取数据时,也会验证校验和,将它们与datanode中存储的校验和进行比较。每个datanode均持久保存有一个用于验证的校验和日志,所以它知道每个数据块的最后一次验证时间。客户端成功验证一个数据块后,会告诉这个datanode,datanode由此更新日志。

HDFS存储着每个数据块的复本,因此它可以通过数据复本来修复损坏的数据块,进而得到一个新的,完好无损的复本。

Hadoop的localFileSystem执行客户端的校验和验证。这意味着在你写如一个名为filename的文件时,文件系统客户端会明确在包含每个文件块校验和的同一个目录内新建一个名为.filename.crc的隐藏文件。

第9章  构建Hadoop集群

Hadoop的主体由Java语言写成,能够在任意一个安装了JVM的平台上运行。但由于仍有部分代码(例如控制脚本)需在Unix环境下执行,因为Hadoop并不适宜以最终产品的形态运行在非Unix平台上。

对于多机架的集群来说,描述清楚节点-机架间的映射关系就很有必要。这样的话,当Hadoop将MapReduce任务分配到各个节点时,会倾向于执行机架内的数据传输(拥有更多带宽),而非跨机架数据传输。HDFS将能够更加智能地放置复本,以取得性能和弹性的平衡。

Hadoop控制脚本(并非守护进程)依赖SSH来执行针对整个集群的操作。

新的开始

9月2号到学校,自己成了宁波城市职业技术学院的大一新生,楼下超市阿姨直夸这个孩子真是独立,自己一个人去超市置办物品,不像其他孩子还要家人护送。

食堂的饭菜好像有点问题,于是我在饿了么办了一个超级会员,可惜折扣不够。

从JVM开始学起,早日挣脱这部分茫然,然后迈入新的空白。

 

《黑天鹅》摘录

序章

我们只赞美那些在历史书中留下名字的人,而忽略了那些我们的书本没有提到的贡献者。

要想描述知识的反面,你应该学会避免使用为知识所创造的词语。

第一章 自我欺骗的人类

历史和社会不是缓慢爬行的,而是在一步步地跳跃,它们从一个断层跃上另一个断层,期间少有波折。

对待历史问题,人类的思想会犯三个毛病,我称之为三重迷雾。它们是:

1.假想的理解,也就是在一个超出人们想象之外的复杂(或随机)的世界,人们都以为自己知道其中正在发生着什么。

2.反省的偏差,也就是我们只能在事后评价事物,就像只能从后视镜里看东西(历史在历史书中比在经验现实中显得更加清晰和有条理)。

3.对事实性信息价值的高估以及权威和饱学之士本身的缺陷,尤其是在他们进行分门别类的时候,也就是进行“柏拉图花”的时候。

 

事后合理性在表面上降低了事件的稀有性,并使事件看上去可以理解。

我没有确定的专业(除了我白天的工作以外),也不想有。当鸡尾酒会上人们问我靠什么谋生时,我总忍不住想回答,“我是一名怀疑经验主义者及闲人,主要事业是对某个思想进行非常深入的思考”,但为了简便起见,我干脆说我是豪华轿车司机。

第三章 极端斯坦与平均斯坦

诚实意味着不惧怕特立独行,也不惧怕特立独行的结果。

书籍的传播到底导致了多大的不公呢?字母使故事和思想能够被高保真地复制,而且复制的规模没有上限,作者不需花费任何额外的精力,甚至不需要仍然健在。

人们喜欢艺术作品,不仅仅是因为艺术作品本身,还为了使自己感到属于某个群体。

在极端斯坦,个体能够轻易地以不成比例地方式影响整体。

第4章 1001天——如何避免成为失败者

某件事情1000天的历史不会告诉你第1001天的任何信息

写在青年节的周末

浑浑噩噩的四月过完啦,大概是上午倒车入库+下午魔兽世界+晚上发呆。由于档案的问题不能报考科目一,所以倒车入库一个项目练了一个月。这周才收到能成功销档案的消息,然而下次报考科目一的档期已经是六月。今天学校给提前去学校参与项目的学生发了邮件,不出意外,我又落选啦,好在能安心在家里考完驾照,再去开始研究生生活。天天在家里打游戏,好像进入了贤者模式,突然缺乏新鲜感,想要找寻新的乐趣。于是,在五月的第一周,记上一笔,但愿在六月里,能看到新的改变。

这几天靠在床头看小说,突然有点渴望恋爱的感觉。不过毕竟现实不像小说的戏剧性,感情这种东西对我来说,似乎很遥远。我大概是和别人聊不到几句话就索然无味,不管是男是女,是熟人或是刚认识的,聊着聊着就感觉烦躁,找个借口就逃回自己的世界。

 

 

 

局外人

当我念大学的时候,有过不少这类雄心壮志。当我辍学之后,很快就懂得了,这一切实际上并不重要。

下午卧倒在床一口气读完了加缪的《局外人》,晚上去散步时我的思绪开始挣扎,有些东西已经压抑在我的胸口太久了。

我好像在默尔索身上看到了自己的影子。一直以来生活在自己的世界里。从小不爱运动,更不爱与人交际。上了高中,因为住校要融入集体。从那时开始发现自己与周遭的格格不入,与同龄人没什么共同语言,更不喜欢与人聊天。因为不喜欢参与同学间的交流,竟然会被冠以“勤奋”的称号,想来有点可笑。甚至在某些上课时间,我时常感到一种巨大的压抑,突然间对课堂充满了厌恶,但这一切只诉诸于想法,我还只是个“乖”学生,不得不困在疲惫的肉体里等待下课铃声。但是高中期间,我真的对高分抱有强烈的渴望么,自欺欺人罢了。高考成绩不太理想,是否要复读?其实我也觉得无关紧要,复读也行,不复读我也能接受。大概我唯一要坚持的,就是读个计算机方向,聊以慰藉网瘾少年的黑客梦想。大学期间的生活大概就惬意了许多,经常翘课去实验室,乐此不疲。期间愈发对课堂教学的模式充满反感,对于老师们循循善诱的教学方式,我习惯坐在最后一排来无声抗议。大三了,父母推荐我考个研究生。后来才发现,大学期间逃课养成的随性性格,很难再重新坐回课桌旁认真看书。于是,考研日历撕去一页又一页,第一次考研失败。我又不甘心想要再考一年,母亲希望我先找个工作,于是矛盾愈演愈烈,李志那首《黑色信封》似乎成了我的内心写照:如果没有人看着我,那该多快乐。

又在家里复习挣扎了半年,逐渐丧失斗志,好在成绩勉强达线,这个月收到进入复试的通知。看着其他考生努力地准备复试,我又兴致索然。我真的在乎这次面试么,就像是考研复习的过程,我时常感到一种无意义的空虚。

那些故事

和我没半毛钱关系

说来说去全他妈废话

我只想陪着困难发呆