当前位置: 首页 > news >正文

图书馆网站开发需求分析上海软件外包公司有哪些

图书馆网站开发需求分析,上海软件外包公司有哪些,嘉兴做微网站的公司,定制网站设计高端网站建设引言 查询分析是大数据要解决的核心问题之一#xff0c;而SQL作为查询分析中使用最简单、最广泛的的语言之一#xff0c;必然而然的催生了许多支持在Hadoop上使用SQL的系统#xff0c;这就是所谓的SQL-on-Hadoop系统#xff0c;其中大众熟知的Hive就是最早的SQL-on-Hadoop…引言 查询分析是大数据要解决的核心问题之一而SQL作为查询分析中使用最简单、最广泛的的语言之一必然而然的催生了许多支持在Hadoop上使用SQL的系统这就是所谓的SQL-on-Hadoop系统其中大众熟知的Hive就是最早的SQL-on-Hadoop系统。 经过若干年的发展SQL-on-Hadoop系统已经百花齐放按照架构划分这些系统大致可以分为以下几类 MapReduce架构系统如Hive这类系统是在MapReduce计算框架上封装了一个SQL语义层在运行过程中把SQL转换为MapReduce程序来执行MPP架构系统如Impala、Presto、Drill等这类系统采用MPP(Massively Parallel Processing)架构而非MapReduce预计算系统如Druid、Kylin等这类系统主要特点是对数据进行预计算并将结果保存而在查询时直接获取相应结果值 本文主要是对这些系统做了一个基本总结并简单介绍了一些主流系统的架构以及处理流程。下表是按照时间顺序对这些系统的一个概述包括技术特点和主导公司等。 项目名称时间点技术特点主导公司Apache Hive2008年进入Apache2010年毕业一款基于HDFS的MapReduce计算框架提供类SQL的数据查询功能本质是将SQL转换为MapReduce任务运行初期由Facebook开发后被各大公司广泛接受Apache Spark2010年进入Apache2014年毕业数据在内存中以RDDResilient Distributed Datasets表示DataFrame是其核心编程抽象同时也支持交互式查询和流计算DatabricksCloudera Impala2012年进入Apache2017年11月毕业一款使用C/C实现的MPP SQL查询引擎使用HDFS作为存储并支持列存ClouderaApache Drill2012年进入Apache2014年毕业以Google Dremel论文为基础一个MPP数据查询引擎支持schema free的交互式数据查询MapRPresto2013年开源基于内存的计算引擎本身并不存储数据支持跨数据源的级联查询FacebookStinger Initiative2013年对Hive的性能优化和提升HortonworksApache Phoenix2013年进入Apache2014年5月毕业构建在HBase上的一个SQL层初期由Salesforce开发Apache Tajo2013年进入Apache2014年5月毕业基于Hadoop的数据仓库和SQL数据查询执行引擎由Database Lab., Korea University开发Apache Flink2014年4月进入Apache2014年12月毕业流式的数据流执行引擎基于流计算来模拟批计算分别提供了流处理和批处理APIData ArtisansApache Kylin2014年11月进入Apache2015年11月毕业使用CUBE技术做多维数据预计算和聚合初期由ebay开发现由Kyligence主导Apache HAWQ2015年进入Apache2018年5月毕业Hadoop原始大规模并行SQL分析引擎支持ACID事物特性HortonworksApache Trafodion2015年进入Apache孵化中构建在HBase上的一个SQL层HP实验室 Apache Hive Apache Hive是Hadoop生态系统中最早的SQL引擎它可以将结构化数据文件映射为一张数据库表并提供类SQL查询功能。Hive本质上是在MapReduce计算框架上封装了一个SQL语义层并在运行过程中把SQL转换为MapReduce程序来执行。 Hive通过用户交互接口接收SQL后其Driver结合元数据将SQL翻译成MapReduce程序并提交到Hadoop中执行最后将执行结果输出其架构如下图所示 主要组成部分包括 user interface即用户接口包含CLI(命令行)JDBC/ODBC等Metastore即元数据包括表名、表的数据所在目录等默认元数据存储在自带的derby数据库中推荐使用MySQL Driver即驱动器包含以下几个组件 解析器(SQL Parser)将SQL转换成抽象语法树(AST)并对AST进行语法分析编译器(Compiler)将AST编译生成逻辑执行计划优化器(Query Optimizer)对逻辑执行计划进行优化执行器(Execution)把逻辑执行计划转换成可以运行的物理计划 Hive提供的类SQL查询功能避免了开发人员书写复杂的MapReduce程序,极大的简化了MapReduce程序的开发大大减少了相应的学习成本。随着技术的不断进步Hive的执行引擎也不断发展尤其是有了Tez之后其性能有了很大的改进。不过其不足依旧很明显即处理速度慢因而比较适合运行在批处理场景中而不适合交互式查询等对时延要求高的场景中。 Apache Spark Spark是一个通用的大数据计算框架期望使用一个技术栈来解决大数据领域包括批处理、流计算、交互式查询、图计算和机器学习在内的各种计算任务其软件栈如下图所示 其中的Spark SQL组件是一个用于处理结构化数据的组件它吸收了一个叫SharkHive-on-Spark的项目。Spark SQL中最重要的一个概念就是DataFrame它是带有Shema信息的RDD类似于传统数据库中的二维表格。Spark SQL支持将多种外部数据源的数据转化为DataFrame包括Json、Parquet等并可以通过将其注册为临时表然后使用SQL来处理和分析这些数据。Spark SQL的运行流程包含以下几步如图所示 包含以下几个步骤 SQL语句经过SqlParser解析成UnresolvedLogicalPlanAnalyzer结合catalog进行绑定,生成LogicalPlanOptimizer对LogicalPlan优化,生成OptimizedLogicalPlanSparkPlan将OptimizedLogicalPlan转换成PhysicalPlanprepareForExecution()将PhysicalPlan转换成executedPhysicalPlanPhysicalPlan执行得到最终结果RDD 传统的MapReduce程序中Map和Reduce阶段的结果都要写磁盘这大大降低了系统性能。Spark使用RDD作为基本数据结构数据常驻内存所以计算速度得到了很大提高。但是当内存不足时其计算速度会大大降低甚至容易出现OOM错误。 Apache Impala Apache Impala是一款基于HDFS/HBase的MPP查询引擎其架构如下图所示 主要组成部分包括 Impalad: 即Impala DaemonImpala守护进程它运行在集群的每个node上负责接收客户端的查询请求对查询进行并行化处理。其中接收查询请求的Impalad为CoordinatorCoordinator对查询语句处理后生成执行计划再把执行计划分发给具有相应数据的其它Impalad执行其他Impalad执行完成后把结果发送回 Coordinator由Coordinator构建最终结果并返回给客户端。另外Impalad进程也会和Statusstore通信以确认哪些Impalad是可以正常工作的Statestore: 负责跟踪和检查Impalad健康状态的进程由statestored进程表示它负责处理Impalad的注册订阅并且和各个Impalad进程保持心跳链接CLI: 提供给用户查询使用的命令行工具Impala Shell使用python实现同时Impala还提供了HueJDBC ODBC使用接口 Impala没有使用MapReduce计算框架而是使用与商用并行关系数据库中类似的分布式查询引擎并且Impala的中间结果不写入磁盘而是通过网络以流的形式传递这大大降低了IO开销因而Impala的查询速度非常快。但是Impala缺点也很明显如对用户自定义函数支持不好、不支持Transforms、不支持查询期的容错等。 Apache Drill Apache Drill是一个分布式的MPP SQL引擎是开源版本的Google Dremel。它支持对本地文件、HDFS、HBASE等数据进行数据查询也支持对如JSON等schema-free的数据进行查询其架构如下图所示 从上图可以看到Drill的核心是DrillBit它主要负责接收客户端的请求处理查询并将结果返回给客户端。 Drill的查询流程包括以下步骤 drill客户端发起查询任意DrilBit都可以接受来自客户端的查询收到请求的DrillBit成为驱动节点Foreman对查询进行分析优化生成执行计划之后将执行计划划分成各个片段并确定合适的节点来执行各个节点执行查询片段并将结果返回给驱动节点驱动节点将结果返回给客户端 Presto Presto是一个分布式的MPP查询引擎支持多种数据源包括Hive、RDBMS、Redis等并且可以跨数据源查询。Presto的基本架构如下图所示 主要组成部分包括 coodinator用于解析查询SQL生成执行计划并分发给worker执行discovery serverworker上线后向discovery server注册。coodinator分发任务前需要向discovery server获取可以正常工作worker列表worker具体执行任务的工作节点 Apache Phoenix Apache Phoenix是一个运行在HBase上的SQL框架其本质是用Java写的基于JDBC API操作HBase的开源SQL引擎通过Phoenix可以像使用MySQL等关系型数据库一样操作HBase中的表。Apache Phoenix支持ACID事务功能的标准SQL它将SQL编译成原生HBase的scan语句其架构如下图所示 从上图可以看到 Phoenix的JDBC driver是在HBase的client端Phoenix在HBase的RegionServer上 Apache Kylin Apache Kylin是一个开源的分布式分析引擎提供Hadoop/Spark之上的SQL查询接口及多维分析OLAP能力。Kylin的核心是预计算即对可能用到的度量进行预计算并将结果保存为Cube以便查询时直接访问。Kylin的架构如下图所示 主要组成部分包括 离线构建部分根据元数据的定义从数据源如Hive抽取数据并通过MapReduce Job构建Cube构建后的Cube保存在HBase中在线查询部分用户通过RESTful API、JDBC/ODBC等接口提交SQLREST服务把SQL交给查询引擎处理。查询引擎解析SQL生成逻辑执行计划之后将其转化为基于Cube的物理执行计划最后读取预计算生成的Cube并返回结果 Apache Flink Apache Flink是一个面向分布式数据流处理和批量数据处理的开源计算平台它能够基于同一个Flink运行时提供流处理和批处理两种类型应用的功能。区别于其他流处理系统Flink作为流处理时把输入数据流看做是无界的而批处理被作为一种特殊的流处理只是它的输入数据流被定义为有界的。 基于同一个Flink运行时Flink RuntimeFlink分别提供了流处理和批处理API为了实现API层流与批的统一Flink提供了一种关系型API即Table SQL API。 Apache HAWQ Apache HAWQ的全称是Hadoop With Query是一个Hadoop原生的MPP SQL引擎。HAWQ能直接在HDFS上读写数据而不需要connector并支持ACID事务特性其架构如下图所示 主要组成部分包括 HAWQ master负责处理客户端提交的SQL解析优化后向集群Segment节点下发查询合并从各Segemt节点返回的结果并返回最终结果给客户端。HAWQ master内部由HAWQ Resource ManagerHAWQ Catalog ServiceHAWQ Fault Tolerance ServiceHAWQ Dispatcher等组件组成。HAWQ master还需要维护global system catalogglobal system catalog是系统表的集合其中包含了HAWQ集群的元数据信息HAWQ segment集群的计算节点本身不存储任何数据所有数据都存储在HDFS上。HAWQ master在分派SQL请求给Segment时会附带相关的元数据信息元数据信息包含了表的HDFS URLSegment通过HDFS URL访问需要处理的数据PXF agentPXF(Pivotal eXtension Framework)的服务。PXF是一个允许HAWQ访问外部系统数据的可扩展框架其中内置了访问HDFS文件HBase表以及Hive表的连接器PXF还可以通过和HCatalog集成来直接访问Hive表 结束语 SQL-on-Hadoop系统经过了若干年的发展已经有了很大的提高但是目前各个系统仍然在不断完善提高例如 执行计划方面更强的优化器执行效率方面支持code generation、vectorization等存储格式方面支持更高效列存等 未来也会出现更多技术、更多系统。本文主要介绍了目前几大开源的SQL-on-Hadoop系统及其架构包括Hive、Spark、Presto、Drill等。 原文链接 本文为云栖社区原创内容未经允许不得转载。
http://www.pierceye.com/news/52734/

相关文章:

  • c 网站开发引擎厦门营销型网站建设
  • 建设网站报价单海南省建设网站的公司电话号码
  • 网站有收录就会排名吗网站建设域名和空间
  • 如何推广我的网站营业推广策划
  • 网站推广工作如何做有哪些好的模板网站
  • 网站的推广等内容手机首页设计
  • 怎么做 代刷网站网站流量分成
  • dw做网站基础行政单位门户网站建设规定
  • 温州做网站软件螺旋钢管网站建设
  • 网站备案信息核验单填写怎么创建网页快捷方式
  • wordpress下载站用什么模板百度识图在线入口
  • 福州高端品牌网站建设外包做一个网站一般费用
  • 云服务器可以放几个网站网站流量seo
  • 大连网站化妆品网站优化
  • 网站 一般 用什么空间网站制作 flash 修改
  • 西部数码网站助手网站建设网站制作网页
  • 外贸电子商务网站建设平台在哪个网站做简历比较好
  • 广州沙河一起做网站服务号 wordpress
  • 电影网站怎么做的海口网站制作策划
  • 点了网站域名会跳转一个服务器下怎么做两个网站吗
  • 中国建设银行个人信息网站用手机制作动画的app
  • 做图表的网站推荐网站建设自己能做吗
  • 北京网站建设出名 乐云践新音乐网站如何建设
  • 厦门房地产网站建设工会网站建设的重要性
  • 重庆网站建设重庆网站建设公司网站建设网站建设劳务协议
  • 宁波网站设计价格wordpress域名绑定
  • 做公司网站,哪个程序用的多wordpress根据用户显示文章
  • 中山市小榄新意网站设计有限公司投资理财产品的网站建设
  • 制作网站怎么制作如何用图片文字做网站
  • 桂林旅游网站制作公司wordpress 菜单编辑