HDFS:Hadoop分布式文件系统(HDFS)被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统。HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。
以上解释来自百度百科,着重理解HDFS是一个分布式文件系统
我们的计算机也是文件系统,而且hdfs还是一个(真)分布式文件系统,这就需要至少两台以上电脑,一个主节点,另一个从节点。而他还是一个文件系统,就包括对于文件的管理。
数据库:事务设计,增删改查
数据仓库: 面向分析(大数据)
Hadoop
• 加工/计算层(MapReduce),以及存储层(Hadoop分布式文件系统)。

-
MapReduce是一种并行编程模型,用于编写普通硬件的设计,谷歌对大量数据的高效处理(多TB数据集)的分布式应用在大型集群(数千个节点)以及可靠的容错方式。 MapReduce程序可在Apache的开源框架Hadoop上运行。
-
Hadoop分布式文件系统(HDFS)是基于谷歌文件系统(GFS),并提供了一个设计在普通硬件上运行的分布式文件系统。它与现有的分布式文件系统有许多相似之处。来自其他分布式文件系统的差别是显著。它高度容错并设计成部署在低成本的硬件。提供了高吞吐量的应用数据访问,并且适用于具有大数据集的应用程序。
除了上面提到的两个核心组件,Hadoop的框架还包括以下两个模块:
Hadoop通用:这是Java库和其他Hadoop组件所需的实用工具。
Hadoop YARN :这是作业调度和集群资源管理的框架。
Hadoop如何工作
建立重配置,处理大规模处理服务器这是相当昂贵的,但是作为替代,可以联系许多普通电脑采用单CPU在一起,作为一个单一功能的分布式系统,实际上,集群机可以平行读取数据集,并提供一个高得多的吞吐量。此外,这样便宜不到一个高端服务器价格。因此使用Hadoop跨越集群和低成本的机器上运行是一个不错不选择。
Hadoop运行整个计算机集群代码。这个过程包括以下核心任务由 Hadoop 执行:
• 数据最初分为目录和文件。文件分为128M和64M(128M最好)统一大小块。
• 然后这些文件被分布在不同的群集节点,以便进一步处理。
• HDFS,本地文件系统的顶端﹑监管处理。
• 块复制处理硬件故障。
• 检查代码已成功执行。
• 执行发生映射之间,减少阶段的排序。
• 发送排序的数据到某一计算机。
• 为每个作业编写的调试日志。
- HDFS架构

* Namenode 节点
主节点是包含GNU/Linux操作系统和软件名称节点的普通硬件。它是一个可以在商品硬件上运行的软件。具有名称节点系统作为主服务器,它执行以下任务:
• 管理文件系统命名空间。
• 规范客户端对文件的访问。
• 它也执行文件系统操作,如重命名,关闭和打开的文件和目录。
* 数据节点
Datanode具有GNU/Linux操作系统和软件Datanode的普通硬件。对于集群中的每个节点(普通硬件/系统),有一个数据节点。这些节点管理数据存储在它们的系统。
• 数据节点上的文件系统执行的读写操作,根据客户的请求。
• 还根据主节点的指令执行操作,如块的创建,删除和复制。
* 块
一般用户数据存储在HDFS文件。在一个文件系统中的文件将被划分为一个或多个段和/或存储在个人数据的节点。这些文件段被称为块。换句话说,数据的HDFS可以读取或写入的最小量被称为一个块。缺省的块大小为128MB,但它可以增加按需要在HDFS配置来改变。
hafs 读写
-
读
客户端要向HDFS写数据,首先要跟namenode(主节点master)通信以确认可以写文件并获得接收文件block(文件块)的datanode(从节点 slave),然后,客户端按顺序将文件逐个block传递给相应datanode,并由接收到block的datanode负责向其他datanode复制block的副本 -
写
MapReduce
分布式计算模型,主要用于搜索领域,解决海量数据计算问题
MR有两个阶段:map和reduce,只需要实现map() reduce() 两个函数,就可以实现分布式计算

- Map任务处理
1.1 读取hdfs文件,每一行解析成一个<key,value> 每一个键值对调用一次map函数
<0,hello you>
<10,hello me>
1.2 覆盖map(),接受1.1产生的<k,v>,进行处理,转换为新的<key,value>
<hello,1>
<you,1>
<hello,1>
<me,1>
1.3 对1.2输出结果键值对进行分区
1.4 对于不同分区中的数据进行排序、分组(相同的key的value放到一个集合中)。
//排序
<hello,1> <hello,1> <me , 1> <you,1>
//分组后
<hello,{1,1}> <me ,{1}> <you,{1}>
1.5 对分组后的数据进行归约(Combiner)
2 Reduce
2.1 多个map任务输出,按照不同分区,通过网络copy到不同的reduce节点上
2.2 对多个map的数据进行合并、排序。覆盖reduce函数,接受分组后的数据,实现自己的业务逻辑
<hello,2><me,1><you,1>
处理后产生新的<k,v>输出
HADOOP
操作命令
./bin/hdfs dfs –ls
网友评论