初识hadoop
Google的“三驾马车“
- GFS
- MapReduce
- BigTable
HDFS
HDFS是什么?
- HDFS是基于流数据拜访模式的分布式文件系统,反对海量数据的存储,容许用户将成千盈百的计算机,组成存储集群。
- 长处:能够解决超大文件、反对流式数据拜访(一次写入,屡次读取)、低成本运行。
- 毛病:不适宜解决低提早的数据拜访,次要解决高数据吞吐量的利用;不适宜解决大量的小文件,这样会节约NameNode内存;不适宜多用户写入及任意批改文件。
HDFS的组成架构
NameNode
- NameNode即名称节点,是HDFS的管理者。
- 次要性能(三个):
治理和保护 HDFS 的命名空间:命名空间镜像文件( fsimage ),操作日志文件( edits )
- fsimage:存储 hadoop 文件系统中的所有目录和文件的序列化信息
- edits:记录 HDFS 最新状态, HDFS 客户端执行的所有写操作记录在 editlog 中
- 治理 DataNode 上的数据块:在 HDFS 中,一个文件被分成一个或多个数据块,这些数据块存储在 DataNode 中, NameNode 通过“文件名-->数据块”映射或者“数据块-->DataNode”来确定
- 接管客户端的申请
DataNode
- 每个磁盘都有默认的数据块大小,它是磁盘进行读、写的最小单位,HDFS默认数据块大小为128MB。数据块如此大,目标是缩小寻址开销,缩小磁盘一次读取工夫。
- 性能:
- 保留数据块:每个数据块对应一个元数据信息文件,用来形容该数据块属于哪个文件,是第几个数据块
- 运行 DataNode 线程,向 NameNode 定期汇报数据块信息
- 定期向 NameNode 发送心跳信息保持联系
SecondaryNameNode
- 即第二名称节点,主要职责是定期把 NameNode 的 fsimage 和 edits 下载到本地,并将它们加载到内存进行合并,最初将合并后的新的 fsimage 上传回 NameNode ,此过程称为检查点 ( CheckPoint )。
- 定期合并 fsimage 和 edits 文件,使 edits 大小放弃在限度范畴内,缩小重新启动 NameNode 时合并 fsimage 和 edits 消耗的工夫。
HDFS Shell
- HDFS Shell 命令是用相似于 Linux Shell 的命令,来操作文件系统。
- 如:
hdfs dfs -ls
,列出文件或目录。
HDFS API
- 当然, Hadoop 提供了多种 HDFS 的拜访接口,其中 Java API可用代码的形式来操作文件系统。
- 实例化 Configuraion 类
- 实例化 FileSystem 类
- 设置指标对象的门路
- 执行文件或目录操作
- 高可用 HA
- 联邦 Fedeeration