感觉Udacity上的hadoop课程挺棒,还是免费的。于是拿来听听看。
说到大数据,被提到的最重要的概念就是3v了。volume、variety、velocity。都是字面意思。其中variety指的是数据会有很多种类,格式也各不相同。用大数据我们可以不管它的格式或者内容,直接进行存储,有用的时候拿出来用就是。比如与客服的通话记录,我们可以是以text形式存储,同时也可以直接把mp3格式的语音记录也存储起来。万一以后机器能对这些完全理解透彻了呢。
hadoop 生态系统
屏幕快照 2017-11-22 下午2.08.32.png课程1的第18节里对hadoop生态系统做了简单介绍。从图中可知,Pig和Hive是建立在mapreduce操作上的,用户写的Pig或Hive命令会被转化成mapreduce代码被执行。
而其他模块则没有出现在mapreduce的上面,比如Hbase、sqoop等。接下来要对这些慢慢了解一些。
其中CDH是cloudera这个公司做的一个继承了hadoop生态系统里很多工具的集,可以省去很多配置安装的麻烦。
HDFS(hadoop distributed file system)
数据在hadoop上被分成一个个块来存储。比如一个150M的数据,会被分成64、64、22的三个块,分别存储到三个DataNode上。还要有一个NameNode用来记录这些块分别是存储到哪些机器的,就是metadata。
为了使数据有冗余去应对节点数据遭损毁,一个数据块会被分别存储在三个data节点上,而namenode则会有两台,一个是主要namenode,还有一个是standby节点。
hadoop 命令
和linux的命令都差不多,只是都以 hadoop fs - 开头(如果没记错的话)
mapreduce
课程中对mapreduce举了一个例子。假设现在有一个很大的账本,上面记录着各地区门店的每一个订单以及订单金额。如何获得各地区的销售额?传统的方式的话可能是会使用一个hashtable类似的数据结构,去分别计算各个地区总销售额。这样做可能会吃掉计算机全部内存,又很慢。
而mapreduce是个分布式的方式。
屏幕快照 2017-11-22 下午3.24.55.png
其中mapper可以被看作是专门做分类的人。这些人每人分到账本中的一部分,并对其中的订单按地区进行分类。
reducer则把mapper分好类的订单拿来,把同一个地区的放到一起,构成一个个更大的某地区的订单集合。最后对这些做简单的求和操作。
Mappers are little programs each deal with small amount of data, and work in parallel.
We call that output intermediate records, hadoop deals with all data in the form of key and value.
Once the mapper finished, a phase of called shuffle and sort take place. The shuffle is the movement that of the intermediate records from the Mappers to the Reducers. The Sort is the fact that the Reducers will organize these sets of records into sorted order.
Task tracker
一个mapreduce任务运行起来的时候这个任务会被交给 JobTracker,jobTracker 会把任务分成多个mapper和reducer,这些mapper、reducer运行在其他节点上。真正的map 和 reduce 这些任务是由一个daemon叫做trasktracker 负责的,这些tracker用来在每个数据块上做map操作。如果某个数据块所处的三个节点的tasktracker都被占用了,则由其他的一个节点用stream的方式得到结果,也就是intermediate result,用来shuffle and sort的数据。map操作的输入是整个要处理的数据的一部分,被称作input split,默认的一个input split是一个64M块。
执行任务命令
hs {mapper script} {reducer script} {input_file} {output directory}
其中 output directory 必须是一个还不存在的目录,如果已存在该目录,hadoop会拒绝执行。
网友评论