初识hadoop Google的“三驾马车“
- GFS
- MapReduce
- BigTable
- 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 耗费的时间。
文章图片
- NameNode
- HDFS Shell
- HDFS Shell 命令是用类似于 Linux Shell 的命令,来操作文件系统。
- 如:
hdfs dfs -ls
,列出文件或目录。
- HDFS API
- 当然, Hadoop 提供了多种 HDFS 的访问接口,其中 Java API可用代码的方式来操作文件系统。
- 实例化 Configuraion 类
- 实例化 FileSystem 类
- 设置目标对象的路径
- 执行文件或目录操作
- 高可用 HA
- 联邦 Fedeeration