入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

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

创建时间:2016-03-10 投稿人: 浏览次数:1929
在进行离线大数据处理工程中,使用hive进行运算出现了瓶颈,由于文件太大,集群的block块采用的是默认128M没有进行调整,而且集群规模比较小,只有4个节点, 机器配置: 2台32core,内存14.5G  1台32core,内存30.3G  1台32core,内存46.1G 
在进行分析过程中,有大量的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.csdn.net/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



声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。