J'KYO
No pains,no gains.

Hadoop是一个开源的大数据框架;

Hadoop是分布式计算的解决方案;

Hadoop = HDFS(分布式文件系统) (存储)+ MapReduce(分布式计算)

HDFS总结:

     普通的成百上千台机器;TB甚至PB为单位的大量的数据;简单便捷的文件获取;

HDFS概念:

   1.数据块 

         数据块是抽象块,而非整个文件作为存储单元;默认大小为64M,一般设置128M,备份3个;

   2.NameNode

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

   3.DataNode

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

HDFS优点:

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

HDFS缺点:

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

1.    数据块 不宜太大,也不宜太小;

太小了,会分割为多个数据块,减低效率,加大了namenode的内存消耗;

太大了会对于并行支持不够,重启需要重新加载数据,数据块过大时间过长;

2.    hadoop2  HA高可用集群,避免了namenode挂掉的情况;

./hdfs dfs -help  查看帮助文档

查看hdfs 根目录:  hdfs dfs -ls /

hdfs dfs -mkdir /test

hdfs dfs -copyFromLocal /xx.txt /test/

hsfs dfs -cat /test/xx.txt

python 操作 hdfs  引入hdfs3模块

YARN(Haoop2之后的资源管理器)概念

      1.ResourceManager:分配和调度资源;启动并监控ApplicationMaster; 监控NodeManager

      2.ApplicatonMaster:为MR类型的程序申请资源,并分配给内部任务;负责数据的切分;监控任务的执行及容错;

      3.NodeManager:管理单个节点的资源;处理来自ResourceManager的命令;处理来自ApplicationMaster的命令

     MapReduce是一种编程模型,是一种编程方法,是抽象的理论;

MapReduce编程模型

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

python mapreduce实例

map.py

 

 

posted on 2018-04-17 19:42  J'KYO  阅读(206)  评论(0编辑  收藏  举报