Hadoop介绍
介绍Hadoop
大数据胜于好算法
- 如果数据足够多,可能产生意想之外的应用
- 无论算法好坏,更多的数据总能带来更好的推荐效果
大数据存储和分析遇到的问题
- 磁盘容量的增长远远大于磁盘读取速度
- 1TB的磁盘,数据传输速度100MB/s,读一遍2.5H
- 写数据就更慢了
解决之道
- 磁盘数据并行读写
- 分布式文件系统,冗余
- MapReduce
Hadoop
Hadoop是一个由Apache基金会所开发的分布式系统基础架构。Hadoop提供了一个可靠的共享存储和分析系统。HDFS实现存储,MapReduce实现分析处理。
传统关系型数据库 vs MapReduce
Hadoop生态圈
Hadoop支持多种语言,包括Java/C/Python/Ruby
HDFS
-
Hadoop Distributed File System
-
HDFS是Hadoop的首选分布式文件系统,同时Hadoop也可以支持其他文件系统,例如本地文件和其他分布式系统。
-
超大文件->1024G->1T->1024T->1P
-
HDFS是为大数据吞吐设计的,这可能会以时间延迟为代价
-
HDFS的block默认为64M,Map任务通常一次处理一个块的任务
-
nodename存储文件的元数据,nodename是放在内存中的,所以文件存储的节点受限于namenode的内存大小
-
显示分布式系统的数据块结构:
# DEPRECATED hadoop fsck / -files -blocks hdfs fsck / -files -blocks
NameNode为master管理者,管理元数据。当客户端发起读取或者写请求时,客户端会把请求发向NameNode,NameNode查询该请求涉及到哪些数据块以及数据块所在节点位置,将DataNode地址返回给客户端。然后客户端从相应的NameNode上读取数据块,并拼接成文件。NameNode只负责返回元数据信息,数据的写入和读取是直接由客户端和各个NameNode间进行传输的。
MapReduce
- MapReduce对数据采用的是运行时解释的方式,所以对非结构化和半结构化数据非常有效
- MapReduce输入的键和值并不是数据固有的属性,而是由分析数据的人员来选择的。