北京快三开奖

  • <tr id="U9YkSO"><strong id="U9YkSO"></strong><small id="U9YkSO"></small><button id="U9YkSO"></button><li id="U9YkSO"><noscript id="U9YkSO"><big id="U9YkSO"></big><dt id="U9YkSO"></dt></noscript></li></tr><ol id="U9YkSO"><option id="U9YkSO"><table id="U9YkSO"><blockquote id="U9YkSO"><tbody id="U9YkSO"></tbody></blockquote></table></option></ol><u id="U9YkSO"></u><kbd id="U9YkSO"><kbd id="U9YkSO"></kbd></kbd>

    <code id="U9YkSO"><strong id="U9YkSO"></strong></code>

    <fieldset id="U9YkSO"></fieldset>
          <span id="U9YkSO"></span>

              <ins id="U9YkSO"></ins>
              <acronym id="U9YkSO"><em id="U9YkSO"></em><td id="U9YkSO"><div id="U9YkSO"></div></td></acronym><address id="U9YkSO"><big id="U9YkSO"><big id="U9YkSO"></big><legend id="U9YkSO"></legend></big></address>

              <i id="U9YkSO"><div id="U9YkSO"><ins id="U9YkSO"></ins></div></i>
              <i id="U9YkSO"></i>
            1. <dl id="U9YkSO"></dl>
              1. <blockquote id="U9YkSO"><q id="U9YkSO"><noscript id="U9YkSO"></noscript><dt id="U9YkSO"></dt></q></blockquote><noframes id="U9YkSO"><i id="U9YkSO"></i>
                企业空间 推销商城 存储论坛
                北京快三开奖全闪存阵列 IBM云盘算 Acronis 安克诺斯 安腾普 腾保数据
                首页 > Hadoop > 注释

                基于Hadoop和Spark的证券买卖数据剖析-上海证券买卖所黄寅飞

                2018-03-05 22:45泉源:中国存储网
                导读:证券买卖数据属于典范的构造化数据,接纳Sql on Hadoop[1]技能,既可用便宜PC效劳器取得精良的容量线性扩展才能,又可提供便于统计剖析的SQL接口方便数据使用开辟。

                基于Hadoop和Spark的证券买卖数据剖析

                上海证券买卖所

                黄寅飞

                择要:

                本文对Hive、Impala、Spark SQL三个开源数据堆栈产物停止功能测试,对分区技能和列存算法停止比拟,并对Spark SQL停止参数设置装备摆设调优。后果标明Sql on Hadoop开源产物在加载功能、盘问功能等方面已到达企业级数据堆栈运用要求。本文还联合iPython Notebook对质券数据停止探究式剖析和可视化展示。

                1 技能概述

                证券买卖数据属于典范的构造化数据,买卖记载寄存冗长的数字和文本信息,记载长度在数百字节。记载条数较多,依照每天5000万条记载预算,10年的记载总量可超越1000亿条,存储量可到达100TB。接纳Sql on Hadoop[1]技能,既可用便宜PC效劳器取得精良的容量线性扩展才能,又可提供便于统计剖析的SQL接口方便数据使用开辟。

                1.1 产物概述

                Hadoop由Yahoo公司在2006年公布,目的是应用便宜效劳器集群搭建面向海量数据的开源盘算引擎,同时包管容忍硬件毛病的数据高可用性和盘算高牢靠性,编程言语为Java。Hadoop框架包括Common大众库、HDFS文件零碎、YARN调理引擎、MapReduce盘算引擎,Hadoop生态圈包括Hive、HBase、Spark、ZooKeeper、Storm等少量开源软件。现在已有Cloudera、Hortonworks、MapR等多家大型企业围绕Hadoop刊行版展开运营效劳。

                Sql on Hadoop的三个代表性开源产物是Hive、Impala[2]和Spark SQL[3],配合特点是数据存储在Hadoop的HDFS散布式文件零碎中,经过Hive办理元数据。产物属于OLAP范围,不建索引,读操纵远多于写操纵,不支持事件,写操纵接纳批量实行方法。

                Hive是Hadoop生态圈中最早的数据堆栈产物,由Facebook在2008年奉献给Apache基金会,编程言语为Java。Hive将SQL语句转换为MapReduce作业提交到Hadoop集群停止散布式盘算,再前往实行后果。受限于Hadoop的作业调理开支,Hive功能较差。

                Impala是Cloudera公司在2012年公布的MPP(Massively Parallel Processing)数据库产物,目的是为Hadoop提供原生SQL盘问引擎,编程言语为C++。Impala自创Google的Dremel产物设计头脑,运用多层盘问树构造,将SQL盘问层层剖析到上层节点并行实行,在前往后果时各层节点可停止部分聚合。Impala不必MapReduce义务机制,改用MPP机制对数据停止处置,功能较优。

                Spark由加州大学伯克利分校AMP实行室(UC Berkeley AMPLab)在2013年奉献给Apache基金会,编程言语为Scala(基于JVM)。Spark SQL是Spark生态圈中的SQL数据引擎,前身为Shark,2014年替换为Spark SQL。借助Spark的RDD内存盘算模子和丰厚算子,Spark SQL提供对海量数据的SQL盘问接口。Spark SQL社区活泼,新版天性能有较大提拔。

                1.2 技能概述

                在Sql on Hadoop产物中使用的要害技能包罗分区和列存紧缩[4]。分区技能依据特定字段对数据停止分别,减少扫描范畴,辅佐盘问。列存紧缩技能依照列存储并紧缩数据,大幅增加IO量。分区参数和紧缩算法的公道选择,可无效提拔全体功能。

                Hive、Impala和Spark SQL依赖HDFS文件零碎存储数据文件。HDFS支持行存款式TextFile(文本行)、SequenceFile(键值数组),也支持列存款式RCFile、ORC、Parquet。列存技能将数据表垂直分别,统一列的一切数据延续存储在一同。如SQL盘问只触及一般列,则只需读取对应列内容,可无效增加IO量。因数据按列存储,以是可以针对每列数据的范例接纳具有针对性的数据紧缩算法,令全体紧缩服从大幅提拔。

                RCFile是Hive推出的列存款式,ORC是针对RCFile提出的优化文件款式。ORC文件包括多少数据带,每个数据带包括多少列记载,以及每列的紧缩算法和统计信息。经过数据带中记载信息,可以在查找时跳过不满意条件的列,进步实行服从。

                Parquet是Twitter和Cloudera协作推出的列存款式。Parquet文件包括多少行组,每个行组包括多少列块,每个列块包括多少数据页,每个数据页内延续寄存列数据,文件尾存储款式信息。Parquet款式关于宽表的盘问功能提拔分明。

                本文对上述产物展开一系列功能实验,评价数据加载功能、单表盘问功能、多表盘问功能,并对参数设置装备摆设停止调优。别的,对怎样停止探究式剖析做了引见。

                2 功能实验

                2.1情况参数

                实验情况为6台PC效劳器(DL380,32核,128GB内存,1TB当地硬盘)组成的千兆网络集群。操纵零碎为64位RHEL 6.3,装置CDH 5.4.5(Hadoop 2.6.0),包括Hive 1.1.0,Impala 2.2.0,独自装置Spark 1.5.2,共用统一套HDFS文件零碎。Spark接纳StandAlone集群形式。HDFS正本数设置装备摆设为2。

                数据源为2015年6月至8月间上海证券市场的脱敏买卖日记,共65天,30.6亿条订单记载,38.1亿条成交记载,此中订单记载长635字节,成交记载长269字节,统共2.70 TB数据量。Impala内存设为48GB,Spark内存设为48GB。

                2.2 加载与盘问

                买卖日记上传到效劳器当地磁盘后,阅历两步数据加载。第一步是文件加载,经过 hdfs dfs -put 下令,将日记文件加载到HDFS文件零碎中,在这一进程中,数据被分块后经过网络停止散布式存储。第二步是表加载,将日记文件映射为内部表,经过Hive的insert overwrite table指令,将买卖记载转换为干系表,以Parquet列式紧缩款式和日期字段分区存入HDFS文件零碎。

                加载测试运用65天的成交日记文件,数据总量为955GB,38.1亿条记载。记载差别用例的加载工夫和紧缩比,见表1。

                表1 文件加载与表加载功能

                编号

                LF1

                LT1

                LT2

                LT3

                LT4

                LT5

                用例

                文件加载

                表加载TextFile

                表加载RcFile

                表加载ORC

                表加载Parquet

                日期分区

                表加载Parquet

                不分区

                耗时

                3624秒

                4448秒

                3264秒

                3239秒

                5155秒

                4819秒

                紧缩比

                n/a

                48.7%

                43.3%

                8.99%

                15.18%

                15.28%

                单个文件(9.9GB)加载时长1分钟44秒,加载速率97.4 MB/s。将散布在6台效劳器硬盘上的文件停止并行加载,总耗时1小时24秒,总加载速率269MB/s。并行加载技能可将文件加载速率提拔到2.76倍。

                表加载阶段, 进一步依照Hive元数据停止ETL转换,数据按列停止紧缩,按指定字段停止分区存储。TextFile和RcFile款式复杂地滤失空缺字符仅有45%左右的紧缩比,ORC和Parquet停止列存紧缩可到达8.99%的紧缩比,即955GB成交日记紧缩后只占用85.9GB的存储空间。

                在分区设置装备摆设方面,按日期分为65个分区。如分区太多会对内存发生较高要求,需警惕设置装备摆设以防止呈现OOM(Out Of Memory)错误。

                数据导入HDFS并在Hive树立元数据后,运用差别产物停止盘问,见表2。单表盘问用例包罗:个数统计、独一性统计、排序TOP N、分类汇总、随机盘问。多表盘问用例包罗:维度统计。以Parquet列存紧缩、 买卖日期分区作为基准。

                表2 Sql on Hadoop产物盘问功能比拟

                编号

                用例

                Hive

                Impala

                Spark SQL

                QB1

                个数统计

                92.207秒

                13.93秒

                37.17秒

                QB2

                独一性统计

                119.343秒

                45.00秒

                26.832秒

                QB3

                排序TOP N

                n/a

                614.19秒

                201.02秒

                QB4

                分类汇总

                573.282秒

                58.72秒

                66.433秒

                QB5

                随机盘问

                84.231秒

                2.80秒

                2.307秒

                QB6

                维度统计

                314.982秒

                39.33秒

                44.895秒

                从表中可见,三个产物中,Hive功能较差(此中QB3用例跑不出来),Impala和Spark SQL功能相称。思索到Spark SQL在数据款式方面兼容性更好,后续次要基于Spark SQL停止差别参数设置装备摆设下的功能实验。

                2.3 数据款式与分区实验

                起首停止数据款式实验,剖析列存紧缩算法关于Spark SQL盘问功能的影响。以买卖日期分区作为基准。从表3可以看到,Rcfile列存绝对Textfile行存,拜访列相比拜访整行IO量增加到1/20,盘问服从可进步。ORC和Parquet列存紧缩将数据量进一步增加到非常之一,盘问服从可进一步进步。

                表3 差别数据款式下盘问功能比拟

                编号

                用例

                Textfile

                Rcfile

                ORC

                Parquet

                QC1

                个数统计

                271.534秒

                115.29秒

                46.528秒

                37.17秒

                QC2

                独一性统计

                185.483秒

                134.317秒

                40.513秒

                26.832秒

                QC3

                排序TOP N

                541.186秒

                511.268秒

                657.166秒

                201.02秒

                QC4

                分类汇总

                289.402秒

                140.898秒

                157.899秒

                66.433秒

                QC5

                随机盘问

                2.296秒

                2.824秒

                1.877秒

                2.307秒

                QC6

                维度统计

                227.818秒

                175.412秒

                138.633秒

                44.895秒

                其次实验差别分区战略下Impala和Spark SQL的功能,以Parquet作为基准。从表4可以看到,数据分区可对盘问功能带来相称大的提拔。

                表4 差别分区战略下盘问功能比拟

                编号

                用例

                Impala

                不分区

                Impala

                日期分区

                Sparksql

                不分区

                Sparksql

                日期分区

                QP1

                个数统计

                13.46秒

                13.93秒

                46.715秒

                37.17秒

                QP2

                独一性统计

                45.04秒

                45.00秒

                30.675秒

                26.832秒

                QP3

                排序TOP N

                629.62秒

                614.19秒

                346.104秒

                201.02秒

                QP4

                分类汇总

                60.22秒

                58.72秒

                117.112秒

                66.433秒

                QP5

                随机盘问

                3.11秒

                2.80秒

                2.371秒

                2.307秒

                QP6

                维度统计

                39.36秒

                39.33秒

                94.173秒

                44.895秒

                2.4 参数设置装备摆设实验

                Spark设置装备摆设参数较多,对功能影响较大的有内存参数、实例数参数和总核数参数[5]。对差别参数设置装备摆设下Spark SQL功能停止实验,寻觅最优的设置装备摆设战略。

                起首调解SPARK_WORKER_MEMORY参数,将实例数牢固为2,总核数牢固为32。当实例内存设为6G时,QM3用例会因OOM错误而中断。从表5可以看到,实例内存从9G到12G时,功能提拔较大,内存再添加,关于单个义务的实行服从影响不大。

                表5 Spark内存参数设置装备摆设实验

                编号

                用例

                9G

                12G

                18G

                QM1

                个数统计

                36.258秒

                37.17秒

                35.086秒

                QM2

                独一性统计

                25.563秒

                26.832秒

                26.699秒

                QM3

                排序TOP N

                408.309秒

                201.02秒

                196.43秒

                QM4

                分类汇总

                66.807秒

                66.433秒

                65.215秒

                QM5

                随机盘问

                3.2秒

                2.307秒

                2.751秒

                QM6

                维度统计

                43.504秒

                44.895秒

                44.362秒

                实例内存牢固为12G,总核数牢固为32,调解实例数参数SPARK_WORKER_INSTANCES。从表6可以看到,实例数从1增至2时,功能有肯定提拔,再添加实例数,关于单个义务功能影响不大。

                表6 Spark实例数参数设置装备摆设实验

                编号

                用例

                1实例

                2实例

                3实例

                QI1

                个数统计

                33.921秒

                37.17秒

                36.631秒

                QI2

                独一性统计

                27.0秒

                26.832秒

                29.097秒

                QI3

                排序TOP N

                246.428秒

                201.02秒

                198.137秒

                QI4

                分类汇总

                85.213秒

                66.433秒

                73.671秒

                QI5

                随机盘问

                2.523秒

                2.307秒

                2.797秒

                QI6

                维度统计

                45.811秒

                44.895秒

                51.382秒

                将实例内存牢固为12G,实例数牢固为2,调解总核数参数SPARK_WORKER_CORES。从表7可以看到,从4核到16核,功能有明显提拔,核数再添加,对单个义务的实行速率影响不大。

                表7 Spark总核数参数设置装备摆设实验

                编号

                用例

                4核

                16核

                32核

                QO1

                个数统计

                43.106秒

                33.683秒

                37.17秒

                QO2

                独一性统计

                31.791秒

                30.402秒

                26.832秒

                QO3

                排序TOP N

                352.349秒

                194.08秒

                201.02秒

                QO4

                分类汇总

                122.85秒

                71.682秒

                66.433秒

                QO5

                随机盘问

                2.11秒

                2.197秒

                2.307秒

                QO6

                维度统计

                74.853秒

                44.34秒

                44.895秒

                2.5 实验小结

                颠末一系列功能实验,偏向于选择Impala和Spark SQL作为Hadoop零碎上用SQL剖析构造化数据的东西。数据款式方面Parquet绝对更优,数据分区比不分区更优。对Spark SQL,需公道设置装备摆设内存参数、实例数和总核数参数,以取得优化功能。

                3 探究式剖析

                Impala和Spark SQL可提供基于Hadoop散布式数据上的秒级盘问回应。从更少数据源获取产物、席位、会员、业务部信息等根底数据,联合证券买卖数据可展开探究式剖析,剖析数据特性,展示可视化图像,停止数据发掘。接纳PySpark+iPython+MatplotLib技能[6]的组合,可经过网页近程交互并可视化展现。

                上证股票共1076支,可依照行业、地区、流畅市值等分别板块。从图1中可看到差别板块的成交额饼图,从行业看,制造业、金融业、交通运输业股票买卖最为活泼,从地区看,北京、上海、广东省上市股票买卖最为活泼,从流畅市值看,50-100亿、100-150亿、150-200亿流畅市值股票买卖最为活泼。相干剧本实行工夫辨别为64、58、256秒。

                基于Hadoop和Spark的证券买卖数据剖析-上海证券买卖所黄寅飞

                 

                基于Hadoop和Spark的证券买卖数据剖析-上海证券买卖所黄寅飞

                 

                基于Hadoop和Spark的证券买卖数据剖析-上海证券买卖所黄寅飞

                图1 产物买卖额散布:行业板块、地区、流畅市值

                从逐笔成交中可以复原出行情曲线。在逐笔成交数据根底上,联合Spark RDD开辟,可天生秒行情,向市场提供汗青行情的按需回放功用,如图2所示。相干剧本实行工夫为6秒。

                基于Hadoop和Spark的证券买卖数据剖析-上海证券买卖所黄寅飞

                图2 某股票6月5日逐秒行情

                在汗青数据中可以依据用户账户盘问全部汗青举动,绘制用户画像,选取某用户,统计该用户交易股票的散布,盘算用户的买入卖出变革曲线,如图3所示。相干剧本实行工夫为75、38秒。

                基于Hadoop和Spark的证券买卖数据剖析-上海证券买卖所黄寅飞

                 

                基于Hadoop和Spark的证券买卖数据剖析-上海证券买卖所黄寅飞

                图3 某账户用户画像

                在用户买卖举动汗青数据根底上,可运用Spark MLLib呆板学习库[7]对用户停止分类,依据差别种别用户的举动特性,施行差别化的羁系风控战略。以股票板块成交金额特性为例,每个账户对应16条特性,5250万活泼账户合计天生特性向量4.7GB,用K均值算法聚类,设K值为5。特性抽取和聚类算法实行工夫辨别为299、42秒。

                4 小结

                本文依据证券行业数据特点,提出基于Sql on Hadoop的行业大数据处理方案。经过一系列功能实验,标明Impala、Spark SQL等开源技能在加载功能、盘问功能等方面已到达企业级数据堆栈运用要求,同时开源社区提供的可视化和呆板学习东西可满意数据迷信家的探究性剖析需求。

                致谢

                感激信息中央摆列和樊小泊的数据效劳支持。感激上市公司羁系一部刘海波提供的上市股票分类数据。感激市场监察部李旭和陈雷提供的业务信息。

                参考文献

                [1] Michael Frampton. Big Data Made Easy: A Working Guide to the Complete Hadoop Toolset. Apress Berkely, CA, USA. 2015

                [2] 贾传青. 开源大数据剖析引擎:Impala实战. 清华大学出书社. 2015

                [3] 王家林. 大数据Spark企业级实战. 电子产业出书社. 2015

                [4] 张俊林. 大数据日知录:架构与算法. 电子产业出书社. 2014

                [5] H. Karau, A. Konwinski, P. Wendell and M. Zaharia. Learning Spark: Lightning-Fast Big Data Analysis. O’Reilly Media, Inc. 2015

                [6] Wes McKinney著,唐学韬等译. 应用Python停止数据剖析. 机器产业出书社. 2014

                [7] Nick Pentreath著,蔡立宇等译. Spark呆板学习. 人民邮电出书社. 2015

                持续阅读
                中国存储网声明:此文观念不代表本站态度,若有版权疑问请联络我们。
                相干阅读
                产物引荐
                头条阅读
                栏目热门

                Copyright @ 2006-2019 ChinaStor.COM 版权一切 京ICP备14047533号

                中国存储网

                存储第一站,存储流派,存储在线交换平台