最基本的概念+简单实战。


最近看到一篇用Hadoop解决交通问题的论文,然而我还没有接触过……

Hadoop是什么

Hadoop是一个开源的大数据框架
Hadoop是一个分布式计算的解决方案
Hadoop=HDFS(分布式文件系统)+MapReduce(分布式计算)
HDFS:存储是大数据技术的基础
MapReduce编程模型:分布式计算是大数据应用的解决方案

HDFS概念

数据块

默认大小为64MB,一般设置为128M,备份x3

NameNode

管理文件系统的命名空间,存放文件元数据
维护着文件系统的所有文件和目录,文件与数据块的映射
记录每个文件中各个块所在数据节点的信息

DataNode

存储并检索数据块
向NameNode更新所存储块的列表

HDFS优缺点

优点

适合大文件存储,支持TB、PB级的数据存储,并有副本策略
可以构建在廉价的机器上,并有一定的容错和恢复机制
支持流式数据访问,一次写入,多次读取最高效

缺点

不适合大量小文件存储
不适合并发写入,不支持文件随机修改
不支持随机读等低延时的访问方式

Hadoop基础架构

YARN概念

ResourceManager

分配和调度资源
启动并监控ApplicationMaster
监控NodeManager

ApplicationMaster

为MR类型的程序申请资源,并分配给内部任务
负责数据的切分
监控任务的执行及容错
NodeManager
管理单个节点的资源
处理来自ResourceManager的命令
处理来自ApplicationMaster的命令

MapReduce编程模型

输入一个大文件,通过Split之后,将其分为多个分片
每个文件分片由单独的机器去处理,这就是Map方法
将各个机器计算的结果进行汇总并得到最终的结果,这就是Reduce方法

1.0和2.0区别

区别
区别

Hadoop生态圈

很多…

HBase

高可靠,高性能,面向列,可伸缩,实时读写的分布式数据库
利用HDFS作为其文件存储系统,支持MR程序读取数据
存储非结构化和半结构化数据
RowKey:数据唯一标识,按字典排序
Column Family:列族,多个列的集合。最多不要超过3个
TimeStamp时间戳:支持多版本数据同时存在

Spark

基于内存计算的大数据并行计算框架
Spark是MapReduce的替代方案,兼容HDFS, HIVE等数据源
优点:
基于内存计算的分布式计算框架
抽象出分布式内存存储数据结构 弹性分布式数据集RDD
基于事件驱动,通过线程池复用线程提高性能

简单实战

常用HDFS Shell命令
类Linux系统:ls, cat, mkdir, rm, chmod, chown等
HDFS文件交互:copyFromLocal, copyToLocal, get, put