Hadoop基础
1、HDFS分布式文件系统:存储是大数据技术的基础。
数据块:
数据块是抽象而非整个文件作为存储单元。
默认大小为64mb,一般设置为128m,备份*3。
NameNode(主):
管理文件系统的命名空间,存放文件元数据。
维护文件系统的所有文件和目录,文件与数据块的映射。
记录每个文件中各个块所在数据节点的信息。
DataNode(从):
存储并检索数据块。
向NameNode更新所存储块的列表。
HDFS优点:
适合大文件存储,支持TB、PB级的数据存储,并有副本策略。
可以构建在廉价的及机器上,并有一定的容错和恢复机制。
支持流式数据访问,一次写入,多次读取最高效。
HDFS缺点:
不适合大量小文件存储。
不适合并发写入,不支持文件随机修改。
不支持随机读等低延时的访问方式。
HDFS写流程:
Client向NameNode请求存储,NameNode给Client返回DataNode空闲信息,Client将数据分块,之后将数据和DataNode的某些信息一起存到DataNode-1上,由于数据块要备份,DataNode-1将数据块传送给DataNode-2和DataNode-3,之后告诉NameNode已经存储完数据块。
客户端向NameNode发起写数据请求
分块写入DataNode节点,DataNode自动完成副本备份
DataNode向NameNode汇报存储完成,NameNode通知客户端
HDFS读流程:
客户端向NameNode发起读数据请求
NameNode找出距离最近的DataNode节点信息发送给客服端
客户端从DataNode分块下载文件
常用HDFS Shell命令
copyFromLocal:从本地拷贝到HDFS
copyToLocal:从HDFS拷贝到本地
get:下载文件
put:上传文件
实操:
./hdfs dfs -help 查看hdfs操作帮助
2、MapReduce编程模型:
分布式计算是大数据应用的解决方案。
MapReduce是一种编程模型,是一种编程方法,是抽象的理论。
YARN:调度MapReduce操作。
ResourceManager:
分配和调度资源
启动并监控ApplicationMaster
监控NodeManager
ApplicationMaster
为MR类型的程序申请资源,并分配给内部任务
负责数据的切分
监控的任务的执行和容错
NodeManager
管理单个结点的资源
处理来自ResourceManager的命令
处理来自ApplicationMaster的命令
MapReduce编程模型
输入一个大文件,通过Split之后,将其分为多个分片
每个文件分片由单独的机器去处理,这就是map方法
将各个机器计算的结果进行汇总并得到最终的结果,这就是Reduce方法
使用mapreduce计算:
/address/../hadoop jar / ... / xxx.jar -files “xx,xx” -input file -output file -mapper “/address file” -reducer “/address file”