首页 文章 精选 留言 我的

精选列表

搜索[hadoop],共8437篇文章
优秀的个人博客,低调大师

Hadoop HDFS概念学习系列之HDFS Master/Slave架构(十)

相比于基于P2P模型的分布式文件系统架构,HDFS采用的是基于Master/Slave主从架构的分布式文件系统,一个HDFS集群包含一个单独的Master节点和多个Slave节点服务器,这里的一个单独的Master节点的含义是HDFS系统中只存在一个逻辑上的Master组件。一个逻辑的Master节点可以包括两台物理主机,即两台Master服务器、多台Slave服务器。一台Master服务器组成单NameNode集群,两台Master服务器组成双NameNode集群,并且同时被多个客户端访问.所有的这此机器通常都是普通的Linux机器,运行着用户级别(user-level)的服务进程。HDFS架构设计图如下: 上图展示了HDFS的NameNode、 DataNode以及客户端之间的存取访问关系,单一节点的NameNode大大简化了系统架构。NameNode负责保存和管理所有的HDFS元数据,因而用户数据就不需要通过NameNode,也就是说文件数据的读写是直接在DataNode上进行的。HDFS存储的文件都被分割成固定大小的Block,在创建Block的时候,NameNode服务器会给每个Block分配一个唯一不变的Block标识。DataNode服务器把Block以Linux文件的形式保存在本地硬盘上,并且根据指定的Block标识和字节范围来读写块数据。出于可靠性的考虑,每个块都会复制到多个DataNode服务器上。在默认情况下,HDFS使用三个冗余备份,当然用户可以为不同的文件命名空间设定不同的复制因子数。NameNode管理所有的文件系统元数据。这些元数据包括名称空间、访问控制信息、文件和Block的映射信息,以及当前Block的位置信息。NameNode还管理着系统范围内的活动,比如,Block租用管理、孤立Block的I回收,以及Block 在 DataNode服务器之间的迁移。NameNode使信息周期性地和每个DataNode服务器通信,发送指令到各个DataNode服务器并接收DataNode中Block的状态信息。 HDFS客户端代码以库的形式被链接到客户程序中。在客户端代码中需要实现HDFS文件系统的API 接口函数,应用程序与NameNode和DataNode服务器通信,以及对数据进行读写操作。客户端和NameNode的通信只获取元数据,所有的数据操作都是由客户端直接和DataNode服务器进行交互的。HDFS不提供POSIX标准的API功能,因此,HDFS API调用不需要深入到Linux vnode级别。无论是客户端还是DataNode服务器都不需要缓存文件数据。客户端缓存数据几乎没有什么用处,因为大部分程序要么以流的方式读取一个巨大的文件,要么工作集太大根本无法被缓存。因此,无须考虑与缓存相关的问题,同时也简化了客户端及整个系统的设计和实现。 本文转自大数据躺过的坑博客园博客,原文链接:http://www.cnblogs.com/zlslch/p/5081550.html,如需转载请自行联系原作者

优秀的个人博客,低调大师

Hadoop MapReduce概念学习系列之MapReduce 资源组织方式(六)

MapReduce计算框架并没有直接调用CPU和内存等多维度资源,它把多维度资源抽象为“slot”,用“slot” 来描述资源的数量。管理员可以在每个节点上单独配置slot个数。slot可以分为map slot和reduce slot。从一定程度上,slot可以看做“任务运行并行度”。如果某个节点配置了5个map slot,那么这个节点最多运行5个Map Task;如果某个节点配置了3个reduce slot,那么该节点最多运行3个Reduce Task。下面我们分别介绍 Map slot和Reduce slot。 1、Map slot 1)Map slot 可用于运行Map Task 的资源,而且只能运行Map Task。 2)每个Map Task通常使用一个map slot。而比如像容量调度器,它可以有比较大的MapTask。这样的MapTask使用内存比较多,那么它可能使用多个map slot。 2、Reduce slot 1)Reduce slot 可用于运行ReduceTask,而且只能运行ReduceTask。 2)每个ReduceTask通常使用一个reduce slot。而比如像容量调度器,它可以有比较大的 ReduceTask。这样的ReduceTask使用内存比较多,那么它可能使用多个reduce slot。 本文转自大数据躺过的坑博客园博客,原文链接:http://www.cnblogs.com/zlslch/p/5058725.html,如需转载请自行联系原作者

优秀的个人博客,低调大师

Hadoop Hive概念学习系列之hive里的视图(十二)

可以先,从MySQL里的视图概念理解入手 视图是由从数据库的基本表中选取出来的数据组成的逻辑窗口,与基本表不同,它是一个虚表。在数据库中,存放的只是视图的定义,而不存放视图包含的数据项,这些项目仍然存放在原来的基本表结构中。 视图可以被定义为多个表的连接,也可以被定义为只有部分列可见,也可为部分行可见。 视图的作用有: 首先,可以简化数据查询语句 其次,可以使用用户能从多角度看待同一数据 然后,通过引入视图可以提高数据的安全性 最后,视图提提供了一定程度的逻辑独立性等。 引入视图机制带来的好处: 通过引入视图机制,用户可以将注意力集中在其关心的数据上(而非全部数据),这样就大大提高了用户效率与用户满意度,而且如果这些数据来源于多个基本表结构,或者数据不仅来自于基本表结构,还有一部分数据来源于其他视图,并且搜索条件又比较复杂时,需要编写的查询语句就会比较烦琐,此时定义视图就可以使数据的查询语句变得简单可行。 定义视图可以将表与表之间的复杂的操作连接和搜索条件对用户不可见,用户只需要简单地对一个视图进行查询即可,故增加了数据的安全性,但不能提高查询效率。 Hive视图是一种无关底层存储的逻辑对象。视图中的数据是SELECT查询返回的结果。在视图选定后才会开始执行SELECT查询。 需要注意的是,视图是只读的,不能向视图中插入或是加载数据。 下面是一个创建并使用视图的例子: create viewgroup_by_year_vw as select year,count(*) as video_ct from videos group by year; select * from group_by_year_vw; 视图通常被用作将数据发布给外部客户端的抽象层。视图可以使用稳定的公开的列名和数据类型来创建。 视图可以允许在不影响下游数据消费者的情况下修改内部的表结构。 一定要理解,创建视图,是基于表来创建得到视图的。 步骤一:创建一个测试表 create table test(id int,name string); desc test; 结果是 id int name string 步骤二:基于表 test 创建一个 test_view 视图 CREATEVIEWtest_view( id, name_length )ASSELECTid,length(name)FROMtest; 步骤三:查看 test_view 视图属性 DESC test_view; 步骤四:查看视图结果 SELECT * FROM test_view; 本文转自大数据躺过的坑博客园博客,原文链接:http://www.cnblogs.com/zlslch/p/6105243.html,如需转载请自行联系原作者

优秀的个人博客,低调大师

Hadoop Hive概念学习系列之hive里的分区(九)

为了对表进行合理的管理以及提高查询效率,Hive可以将表组织成“分区”。 分区是表的部分列的集合,可以为频繁使用的数据建立分区,这样查找分区中的数据时就不需要扫描全表,这对于提高查找效率很有帮助。 分区是一种根据“分区列”(partition column)的值对表进行粗略划分的机制。Hive中的每个分区对应数据库中相应分区列的一个索引,每个分区对应着表下的一个目录,在HDFS上的表现形式与表在HDFS上的表现形式相同,都是以子目录的形式存在。 一个表可以在多个维度上进行分区,并且分区可以嵌套使用。建分区需要在创建表时通过PARTITIONED BY子句指定,例如: CREATE TABLE logs( timestamp BIGINT, line STRING ) PARTITIONED BY (date STRING,country STRING); 在将数据加载到表内之前,需要数据加载人员明确知道所加载的数据属于哪一个分区。 使用分区在某些应用场景下能给有效地提高性能,当只需要遍历某一个小范围内的数据或者一定条件下的数据时,它可以有效减少扫描数据的数量,前提是需要将数据导入到分区内。 注意:PARTITONED BY子句中定义的列是表中正式的列(分区列),但是数据文件内并不包含这些列。 在Hive里,为什么要分区? 庞大的数据集可能需要耗费大量的时间去处理。在许多场景下,可以通过分区或切片的方法减少每一次扫描总数据量,这种做法可以显著地改善性能。 数据会依照单个或多个列进行分区,通常按照时间、地域或者是商业维度进行分区。比如vido表,分区的依据可以是电影的种类和评级,另外,按照拍摄时间划分可能会得到更一致的结果。为了达到性能表现的一致性,对不同列的划分应该让数据尽可能均匀分布。最好的情况下,分区的划分条件总是能够对应where语句的部分查询条件。 Hive的分区使用HDFS的子目录功能实现。每一个子目录包含了分区对应的列名和每一列的值。但是由于HDFS并不支持大量的子目录,这也给分区的使用带来了限制。我们有必要对表中的分区数量进行预估,从而避免因为分区数量过大带来一系列问题。 Hive查询通常使用分区的列作为查询条件。这样的做法可以指定MapReduce任务在HDFS中指定的子目录下完成扫描的工作。HDFS的文件目录结构可以像索引一样高效利用。 本文转自大数据躺过的坑博客园博客,原文链接:http://www.cnblogs.com/zlslch/p/6105053.html,如需转载请自行联系原作者

资源下载

更多资源
优质分享App

优质分享App

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

用户登录
用户注册