HDFS 按照 Master 和 Slave 结构,将集群的主机分为 NameNode、DataNode 等角色。 NameNode 主机即 Master 节点,有且只有一个,它负责管理整个分布式文件系统,包括管理 数据块的映射,处理客户端的读写请求,配置副本策略,管理 HDFS 的名称空间等。DataNode 则是 Slave 节点,可以有多个 DataNode 节点,其主要负责存储由客户端发送过来的数据块, 并且执行数据块的读写操作。HDFS 的结构如图 1.1 所示。 文献综述
HDFS 内部结构
HDFS 文件写入流程是,首先客户端传入对 HDFS 的文件上传请求,并把文件划分为多个 数据块,当 NameNode 节点接收到请求后查询可用 DataNode 节点,并把查询结果返回给客户 端,同时将划分好的数据块写入指定的 DataNode 节点中,实现分布式文件存储。
2) MapReduce 并行计算模型
MapReduce 是基于 HDFS 的分布式计算编程模型,非常适用于对海量数据的计算处理。 MapReduce 的两项核心操作是 Map 和 Reduce,用户通过编写 Map 函数实现将数据切分成符 合自身需求的键值对形式,Reduce 函数将输入的键和值列表进行更复杂的计算,产生一系列 新的键值对。
MapReduce 的具体工作流程是,首先对输入的数据进行分片,把大量的数据分成基本相 等的块,同时将数据转换成键值对的形式输入;然后由集群中的多台主机并行执行 Map 工作, 并把中间结果写入本地文件中;执行完 Map 工作后,再次将中间结果中键相同的数据合并到 一起,并发送给 Reduce;Reduce 阶段会按照用户编写的函数运行,将计算处理后的结果再次 转换成键值对输出。如图 1.2 所示。
HDFS输入
MapReduce 计算过程
1.3.3 Sqoop 工具
Sqoop 工具是由 Apache 基金会开发的项目,它可以用来将 Hadoop 和传统关系型数据库 中的数据进行相互转移,同时还支持对其他一些 NoSQL 数据库的连接。由于 Hive 基于 HDFS 分布式文件系统,所以 Sqoop 工具也支持传统数据库和 Hive 之间二维表的转移。 来!自~优尔论-文|网www.youerw.com
1.3.4 Hive 数据仓库
Hive 是由 Facebook 基于 Hadoop 分布式平台所开发的数据仓库应用,可以将分布式文件 系统中的结构化数据转换成类似传统关系型数据库的表结构。同时,Hive 还提供类似 SQL 语 法的 HQL 数据查询语言接口,这些封装完善的接口让用户可以快速实现对分布式数据的存 储、查询和分析。
Hive 的工作流程是,用户输入 HQL 查询语言,向 Hive 发出数据操作请求,Hive 接收请
求后,将 HQL 语句转化为 MapReduce 任务,并提交给底层的 Hadoop,Hadoop 接收 MapReduce
任务并执行,最终返回执行结果