Spark-SQL与hive整合【版本spark1.6.0+hive0.14】--Standalone模式

面对Hive处理大数据时遭遇的性能瓶颈,本文通过调整集群配置并引入Spark-SQL来解决问题。文中详细介绍了从Hive迁移到Spark-SQL的过程,包括所需软件环境的搭建步骤及具体配置。
在进行离线大数据处理工程中,使用hive进行运算出现了瓶颈,由于文件太大,集群的block块采用的是默认128M没有进行调整,而且集群规模比较小,只有4个节点,
机器配置:
2台32core,内存14.5G 
1台32core,内存30.3G 
1台32core,内存46.1
在进行分析过程中,有大量的left jion和group by  以及sum count HQL各种嵌套[主要是当初设计的不合理,下边的没有经验,按照普通的RDB来使用了],在使用hive分析过程中,文件特别大,会启动很多的mapper,因此需要申请大量的containers需要大量内存,由于内存不足常常导致nodeMannger自杀,(yarn调度配置采用的是默认配置){默认情况下,YARN采用了线程监控的方法判断任务是否超量使用内存,一旦发现超量,则直接将其杀死。由于Cgroups对内存的控制缺乏灵活性(即任务任何时刻不能超过内存上限,如果超过,则直接将其杀死或者报OOM),而Java进程在创建瞬间内存将翻倍,之后骤降到正常值,这种情况下,采用线程监控的方式更加灵活(当发现进程树内存瞬间翻倍超过设定值时,可认为是正常现象,不会将任务杀死),因此YARN未提供Cgroups内存隔离机制。}并且会报OOM,程序终止运行,查看了官网有一些建议,但是数据量大,集群小的先决条件,最终尝试Spark-Sql,由于它是基于RDD的,并且它的lineage容错机制,和基于内存+磁盘的高速计数特性,最终测试完全在意料之中,运行是相当的流畅。下边介绍下Spark-SQL与hive整合:
需要软件
* CentOS-6.6 (Final)
* JDK-1.7.0_25
* Maven-3.2.1
* Hadoop-2.2.0
* Spark-1.3.1
* Hive-0.12.0
* MySQL-Server-5.5.8
1、搭建hadoop集群见【http://blog.youkuaiyun.com/bbaiggey/article/category/6113763
2、下载spark1.6.0解压
1>配置进环境变量
2>修改conf/spark-env.sh增加 
export JAVA_HOME=/home/hadoop/sxp/jdk7
SPARK_MASTER_IP=pbshdp101
export HADOOP_HOME=/home/hadoop/sxp/hadoop-2.6.0
export SPARK_CLASSPATH="$SPARK_CLASSPATH:/home/hadoop/sxp/apache-hive-0.14.0-bin/lib/mysql-connector-java-5.0.5.jar"

3>cp hive-site.xml 、hdfs-site.xml、core-site.xml到conf目录
4>修改slaves添加worker节点的主机名或ip地址
5>配置master到worker的免密码登陆
6>讲配置好的spark scp到其他worker节点上
7>在主节点上启动start-all.sh
8>在浏览器中访问 http://masterIP:8080
{spark-sql --master spark://masterIP101:7077 --driver-memory 2g --executor-memory 2g    ./start-all.sh --memory2g}
9>要执行sql查询,在客户端启动 bin/spark-shell --master spark://masterIP:7077




评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值