hive与hadoop、spark集成方案实践
2015-05-05 10:09
453 查看
这几天我尝试了hadoop+spark+hive+mysql集成方案:
1. Hadoop: 提供HDFS服务
2. Spark: 实现map-reduce分析算法
3. Hive提供Spark计算的来源数据
4. Mysql存放Hive的元数据,以及计算的最终结果
首先,我把需要处理的原始数据文件临时存放在hdfs上,文件名是随机产生,以实现文件名的唯一性。
然后,我通过hive提供的接口,将数据导入到hive中。(注:其实hive是将数据保存在HDFS上自己特定目录下)
最后,我用spark处理hive上数据,再将最终结果存放到mysql里面。
这套方案已经可以工作。不过还有一些遗留问题:
Hive的效率:为了提高hive的处理效率,需要将数据分区。hive分区的实现原理,与我们之前的想法是一致的。Hive也是在hdfs上创建了不同的目录,来存放分区数据。
但是hive的分区对用户不是透明的。也就是说,在我们查询数据时,必须知道是要查询哪几个分区,在查询条件中也必须显式地指出分区的具体值。
这个与我之前理解的分区接口不太一样。比如mysql的分区,用户是不需要在查询SQL中写出分区条件的。另外, hive支持的SQL标准也有限。论坛说hive在处理大规模数据时,性能比较差。
Hive的性能比较差,主要是基于hadoop map-reduce方案的原因。Hadoop map-reduce在处理过程中,会把中间结果写入hdfs,也就是磁盘上。IO效率会成为系统瓶颈。
星环科技采用Spark来实现处理过程,大量中间结果保存在内存中,这个应该是影响效率最大的部分。
我看了星环科技的方案,他没有用SparkSQL、Hive这样的技术,而是自己实现SQL这一层。
参考了网上的一些资料,我们也可以按这个思路试一下:在上层封装一层SQLParser,在下面可以基于Spark来实现具体动作。
我找了一个开源SQLParser: JSqlParser http://jsqlparser.sourceforge.net/
通过这个工具,可以对用户提交的SQL进行解析,然后用map-reduce对源数据进行处理,得到用户想要的结果。
我试用了一下这个工具,可以分析SQL文法。这个文法采用JavaCC描述,可以根据需要进行调整。
1. Hadoop: 提供HDFS服务
2. Spark: 实现map-reduce分析算法
3. Hive提供Spark计算的来源数据
4. Mysql存放Hive的元数据,以及计算的最终结果
首先,我把需要处理的原始数据文件临时存放在hdfs上,文件名是随机产生,以实现文件名的唯一性。
然后,我通过hive提供的接口,将数据导入到hive中。(注:其实hive是将数据保存在HDFS上自己特定目录下)
最后,我用spark处理hive上数据,再将最终结果存放到mysql里面。
这套方案已经可以工作。不过还有一些遗留问题:
Hive的效率:为了提高hive的处理效率,需要将数据分区。hive分区的实现原理,与我们之前的想法是一致的。Hive也是在hdfs上创建了不同的目录,来存放分区数据。
但是hive的分区对用户不是透明的。也就是说,在我们查询数据时,必须知道是要查询哪几个分区,在查询条件中也必须显式地指出分区的具体值。
这个与我之前理解的分区接口不太一样。比如mysql的分区,用户是不需要在查询SQL中写出分区条件的。另外, hive支持的SQL标准也有限。论坛说hive在处理大规模数据时,性能比较差。
Hive的性能比较差,主要是基于hadoop map-reduce方案的原因。Hadoop map-reduce在处理过程中,会把中间结果写入hdfs,也就是磁盘上。IO效率会成为系统瓶颈。
星环科技采用Spark来实现处理过程,大量中间结果保存在内存中,这个应该是影响效率最大的部分。
我看了星环科技的方案,他没有用SparkSQL、Hive这样的技术,而是自己实现SQL这一层。
参考了网上的一些资料,我们也可以按这个思路试一下:在上层封装一层SQLParser,在下面可以基于Spark来实现具体动作。
我找了一个开源SQLParser: JSqlParser http://jsqlparser.sourceforge.net/
通过这个工具,可以对用户提交的SQL进行解析,然后用map-reduce对源数据进行处理,得到用户想要的结果。
我试用了一下这个工具,可以分析SQL文法。这个文法采用JavaCC描述,可以根据需要进行调整。
相关文章推荐
- eclipse集成hadoop+spark+hive本地开发图文详解
- 大数据Spark “蘑菇云”行动第102课:Hive性能调优之底层Hadoop引擎调优剖析和最佳实践
- 大数据集群遇到的问题(Hadoop、Spark、Hive、kafka、Hbase、Phoenix)
- Hadoop and Spark and Hive Installation
- Spark集成 hadoop,hbase 的 maven冲突
- Spark-Hadoop、Hive、Spark 之间是什么关系?
- 从Hadoop到Spark的架构实践
- 从Hadoop到Spark的架构实践
- Hadoop-2.6.0+Zookeeper-3.4.6+Spark-1.5.0+Hbase-1.1.2+Hive-1.2.0集群搭建
- [置顶] 大数据学习系列之七 ----- Hadoop+Spark+Zookeeper+HBase+Hive集群搭建 图文详解
- 【原创 Hadoop&Spark 动手实践 7】Spark 计算引擎剖析与动手实践
- 如何用形象的比喻描述大数据的技术生态?Hadoop、Hive、Spark 之间是什么关系?
- hadoop+hbase+hive+Spark环境性能调优---安装系列九
- spark与hive的集成
- 大数据架构开发 挖掘分析 Hadoop HBase Hive Storm Spark Sqoop
- spark/hadoop/hive/alluxio/sqoop/zookeeper 安装文档
- spark+hadoop+sqoop+hive平台bug解决方法
- Hadoop(HDFS、YARN、HBase、Hive和Spark等)默认端口表
- 一文看懂大数据的技术生态圈,Hadoop,hive,spark都有了
- hadoop入门之与hive及hbase集成配置