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

烟台赶集网网站建设做的比较唯美的网站

烟台赶集网网站建设,做的比较唯美的网站,企业门户模板,一个微信可以做两个网站支付宝2019独角兽企业重金招聘Python工程师标准 近几年#xff0c;Apache Kylin作为一个高速的开源分布式大数据查询引擎正在迅速崛起。它充分发挥Hadoop、Spark、HBase等技术的优势#xff0c;通过对超大规模数据集进行预计算#xff0c;实现秒级甚至亚秒级的查询响… 2019独角兽企业重金招聘Python工程师标准 近几年Apache Kylin作为一个高速的开源分布式大数据查询引擎正在迅速崛起。它充分发挥Hadoop、Spark、HBase等技术的优势通过对超大规模数据集进行预计算实现秒级甚至亚秒级的查询响应时间同时提供标准SQL接口。目前Apache Kylin已在全球范围得到了广泛应用如百度、美团、今日头条、eBay等支撑着单个业务上万亿规模的数据查询业务。在超高性能的背后Cube是至关重要的核心。一个优化得当的Cube既能满足高速查询的需要又能节省集群资源。本文将从多个方面入手介绍如何通过优化Cube提升系统性能。 1、Cube基本原理 在传统多维分析就有多维立方体OLAP Cube的概念。Apache Kylin在大数据领域对Cube进行了扩展通过执行 MapReduce/Spark任务构建Cube对业务所需的维度组合和度量进行预聚合当查询到达时直接访问预计算聚合结果省去对大数据的扫描和运算这就是Apache Kylin高性能查询的基本实现原理。 如图1所示Apache Kylin会对SQL的查询计划进行改写把源表扫描、多表连接、指标聚合等在线计算转换成对预计算结果的读取极大减少了在线计算和I/O读写的代价。 而查询所访问的预计算结果保存在Cuboid当中见图1红色方框Cuboid大小只和维度列的基数有关和源数据行数无关这使得查询的时间复杂度可以取得一个量级的提升。 图 - 1预计算查询计划 一个Cuboid对应着一组分析的维度并保存了度量的聚合结果。Cube就是所有Cuboid的集合如图2所示每个节点代表一个Cuboid。当查询到达Apache Kylin会根据SQL所使用的维度列在Cube中选择最合适的Cuboid最大程度地节省查询时间。 图 - 2 Cube示意图 2、Cube优化案例 社区不乏一些使用Apache Kylin的成功案例分享但经常还会看到很多朋友遇到性能问题例如SQL查询过慢、Cube构建时间过长甚至失败、Cube膨胀率过高等等。究其原因大多数问题都是由于Cube设计不当造成的。因此合理地进行Cube优化就显得尤为重要。 这里先分享两个社区用户进行优化的案例 案例1 – 提升Cube查询效率 背景某智能硬件企业使用Apache Kylin作为大数据平台查询引擎对查询性能有较高要求希望提高查询效率。 数据 9个维度其中1个维度基数是千万级1个维度基数是百万级其他维度基数是10w以内单月原始数据6亿条优化方案 数据清理将时间戳字段转换成日期降低维度的基数调整聚合组不会同时在查询中出现的维度分别包含在不同聚合组如崩溃时间、上传时间等设置必须维度把某些超低基数维度设为必须维度优化成果 查询性能提升5倍构建时间缩短30%Cube大小减小74%案例二 – 提升Cube构建效率 背景某金融企业使用Apache Kylin作为报表分析引擎发现Cube膨胀率多大、构建时间过长希望对这一情况进行改善。 硬件20台高配置PC服务器 数据事实表有100多万条记录度量是某些列的平均值 优化方案 维度精简去除查询中不会出现的维度调整聚合组设置多个聚合组每个聚合组内设置多组联合维度优化成果 3、Cube优化原理 从以上案例可以看出通过Cube调优可以显著改善Apache Kylin的构建性能、查询性能及Cube膨胀率。那么这些改进的背后究竟是什么原理呢 为了深入理解Cube首先要先了解Cuboid生成树。如图3所示在Cube中所有的Cuboid组成一个树形结构根节点是全维度的Base Cuboid再依次逐层聚合掉每个维度生成子Cuboid直到出现0个维度时结束。图3中绿色部分就是一条完整的Cuboid生成路径。预计算的过程实际就是按照这个流程构建所有的Cuboid。 图 - 3 Cuboid生成树 通过这颗Cuboid生成树我们不难发现当维度数量过多就会导致Cuboid数量以指数级膨胀如果维度基数过大还会使所在的Cuboid结果集变大。这些都是影响Cube膨胀率和构建时间的重要因素。 但是所有的Cuboid都是必要的吗实际上在多数情况下我们并不需要这里的每一个Cuboid因此需要对Cuboid生成树做剪枝。剪枝可以从两个方面入手数据特性、查询需求。首先介绍数据特性考虑下图的两个Cuboid左侧Cuboid包含4个维度ABCD右侧Cuboid包含3个维度ABC而两个Cuboid都包含相同或极度相近行数的记录说明读取两个Cuboid结果的代价是一样的同时左侧Cuboid除了具有右侧Cuboid的查询支持能力外还能支持带有维度D的查询因此右侧Cuboid就可以被去除。 图 - 4 去除冗余Cuboid 再考虑查询需求在报表或多维分析场景中有些维度是每次查询都会出现的如年份有些维度总是一起出现的如开始时间、结束时间有些维度间是有层级关系的如商品分类或地理信息。充分利用查询的这些实际需求也能去除不需要的Cuboid例如如果年份是必要的那么所有不包含年份维度的Cuboid都可以被去除如果两个维度总是同时出现那么这这些维度单独出现的Cuboid就可以被去除。 在Apache Kylin中可以通过设置Cube的维度组合规则来去除无用的Cuboid。首先可以通过定义(1)聚合组对维度分组只在每个聚合组内生成Cuboid。此外在单个聚合组内部还可以设置维度组合规则如(2)必须维度用于定义一定出现的维度、(3)联合维度用于定义一组同时出现的维度、(4)层级维度用于定义一组有层级关系的维度详细的Cuboid生成规则如下图所示 图 - 5聚合组规则 5衍生维度 维表中可以由主键推导出值的列可以作为衍⽣维度。使用场景以星型模型接入时。例如用户维表可以从userid推导出用户的姓名年龄性别。优化效果维度表的N个维度组合成的cuboid个数会从2的N次方降为2。 1聚集组 聚集组用来控制哪些cuboid需要计算。 适用场景不是只需要计算base cuboid的情况下都需要聚集组。 注意事项一个维度可以出现在多个聚集组中但是build期间只会计算一次。 如果不设置聚集组默认情况下只会计算 base cuboid。 聚集组不宜太多。 2强制维度 强制维度所有cuboid必须包含的维度不会计算不包含强制维度的cuboid。 适用场景可以将确定在查询时一定会使用的维度设为强制维度。例如时间维度。 优化效果将一个维度设为强制维度则cuboid个数直接减半。 3联合维度 联合维度将几个维度视为一个维度。 适用场景 1 可以将确定在查询时一定会同时使用的几个维度设为一个联合维度。 2 可以将基数很小的几个维度设为一个联合维度。 3 可以将查询时很少使用的几个维度设为一个联合维度。 优化效果将N个维度设置为联合维度则这N个维度组合成的cuboid个数会从2的N次方减少到1。 4层次维度 层次维度具有一定层次关系的维度。 使用场景像年月日国家省份城市这类具有层次关系的维度。 优化效果将N个维度设置为层次维度则这N个维度组合成的cuboid个数会从2的N次方减少到N1。 6Extended Column 在OLAP分析场景中经常存在对某个id进行过滤但查询结果要展示为name的情况比如user_id和user_name。这类问题通常有三种解决方式 a. 将ID和Name都设置为维度查询语句类似select name, count(*) from table where id 1 group by id,name。这种方式的问题是会导致维度增多导致预计算结果膨胀 b. 将id和name都设置为维度并且将两者设置为联合。这种方式的好处是保持维度组合数不会增加但限制了维度的其它优化比如ID不能再被设置为强制维度或者层次维度 c. 将ID设置为维度Name设置为特殊的Measure类型为Extended Column。这种方式既能保证过滤id且查询name的需求同时也不影响id维度的进一步优化。 所以此类需求我们推荐使用 Extended Column。 7HBase Rowkey顺序 简单的讲查询频率越高的维度在Rowkey中的顺序需要越靠前。 8调整Cube并发粒度 当Segment中某个Cuboid的大小超出一定的阈值时系统会将该Cuboid的数据分片到多个Hbase Region Server从而实现Cuboid数据读取的并行化优化Cube的查询速度。 kylin的默认设置中 kylin.storage.hbase.min-region-count1, kylin.storage.hbase.max-region-count500,  kylin.storage.hbase.region-cut-gb5 在实际应用中根据实际数据量调整可以将 kylin.storage.hbase.min-region-count2, kylin.storage.hbase.max-region-count100 kylin.storage.hbase.region-cut-gb1 上面设置为最小为2个分区每个分区大小为1G最多设置100个region分区。 Refer [1] Apache Kylin 深入Cube和查询优化 http://geek.csdn.net/news/detail/199615 [2] Apache Kylin 维度优化指南 http://bit.ly/2llpR69 [3] 【技术帖】Apache Kylin Cube优化方式 http://bit.ly/2DqB8tg 转载于:https://my.oschina.net/leejun2005/blog/79113
http://wiki.neutronadmin.com/news/125042/

相关文章:

  • 做网站用的系统wordpress如何输入拼音
  • 简单详细搭建网站教程视频教程公司网站建设youyi51
  • 平台网站怎么做的好企业网络推广价格
  • 湛江市seo网站设计报价太原建设北路小学网站
  • 百度站长平台安卓版search and replace wordpress
  • 旅游网站wordpress常州百度公司
  • 好看的学校网站模板怎么查询网站备案
  • 郑州营销网站托管网络运营中心
  • 沈阳做网站seo北京高端建设网站
  • 找人做网站内容自己编辑吗wordpress 离线编辑器
  • 搭建租号网的网站网站项目流程
  • 实用网站建设wordpress显示浏览次数
  • 英文网站提交有了网站源码如何做网页
  • 如何在解决方案中新建网站手机app界面设计分析
  • 北京网站建设公司费用网站建设经验王者荣耀恺和
  • 用vs2010做网站论文短视频app用户量排行榜
  • linux系统服务器怎么做网站湛江麻章区
  • 建设学生社团网站的可行性分析云服务器价格
  • 公司网站怎么推广上海做电子商务网站的公司
  • 建设银行兰州分行网站电子商务服务平台
  • 手机网站页面模板天津创思佳网络网站制作公司
  • .net网站开发简介wordpress扒主题
  • 一个网站seo做哪些工作内容佛山网站建设明细
  • 大连百度做网站推广电话软件开发的职业规划1000
  • 服装东莞网站建设良品铺子网站建设设计
  • 种子搜索网站怎么做的修机械师怎么做我小样网站角仰望
  • 网络营销导向的企业网站建设的要求WordPress文章怎么折叠
  • 安阳哪里有学做网站的学校好的宠物网站模板
  • 鲜花网站建设文档苏州网页服务开发与网站建设
  • 网站带支付源码ih5网站制作平台