




已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Hive on Spark安装配置详解本文章来自于阿里云云栖社区摘要:本文主要记录如何安装配置Hive on Spark,并列举遇到的坑及解决办法。可进入我的博客(原文链接:/2016/10/10/Hive%20on%20Spark%E5%AE%89%E8%A3%85%E9%85%8D%E7%BD%AE%E8%AF%A6%E8%A7%A3/?spm=5176.100239.blogcont72228.9.Qn7zSh)查看原文。简介本文主要记录如何安装配置Hive on Spark,在执行以下步骤之前,请先确保已经安装Hadoop集群,Hive,MySQL,JDK,Scala,具体安装步骤不再赘述。背景Hive默认使用MapReduce作为执行引擎,即Hive on mr。实际上,Hive还可以使用Tez和Spark作为其执行引擎,分别为Hive on Tez和Hive on Spark。由于MapReduce中间计算均需要写入磁盘,而Spark是放在内存中,所以总体来讲Spark比MapReduce快很多。因此,Hive on Spark也会比Hive on mr快。为了对比Hive on Spark和Hive on mr的速度,需要在已经安装了Hadoop集群的机器上安装Spark集群(Spark集群是建立在Hadoop集群之上的,也就是需要先装Hadoop集群,再装Spark集群,因为Spark用了Hadoop的HDFS、YARN等),然后把Hive的执行引擎设置为Spark。Spark运行模式分为三种1、Spark on YARN 2、Standalone Mode 3、Spark on Mesos。Hive on Spark默认支持Spark on YARN模式,因此我们选择Spark on YARN模式。Spark on YARN就是使用YARN作为Spark的资源管理器。分为Cluster和Client两种模式。一、环境说明本教程Hadoop相关软件全部基于CDH5.5.1,用yum安装,系统环境如下: 操作系统:CentOS 7.2 Hadoop 2.6.0 Hive1.1.0 Spark1.5.0 MySQL 5.6 JDK 1.8 Maven 3.3.3 Scala 2.10各节点规划如下:1 Goblin01 nn1 jn1 rm1 worker master hive metastore mysql2 Goblin02 zk2 nn2 jn2 rm2 worker hive3 Goblin03 zk3 dn1 jn3 worker hive4 Goblin04 zk4 dn2 worker hive说明:Goblin0104是每台机器的hostname,zk代表zookeeper,nn代表hadoop的namenode,dn代表datanode,jn代表journalnode,rm代表resourcemanager,worker代表Spark的slaves,master代表Spark的master二、编译和安装Spark(Spark on YARN)2.1 编译Spark源码要使用Hive on Spark,所用的Spark版本必须不包含Hive的相关jar包,hive on spark 的官网上说“Note that you must have a version of Spark which does not include the Hive jars”。在spark官网下载的编译的Spark都是有集成Hive的,因此需要自己下载源码来编译,并且编译的时候不指定Hive。我们这里用的Spark源码是spark-1.5.0-cdh5.5.1版本,下载地址如下:/cdh5/cdh/5/spark-1.5.0-cdh5.5.1-src.tar.gz下载完后用 tar xzvf 命令解压,进入解压完的文件夹,准备编译。注意:编译前请确保已经安装JDK、Maven和Scala,maven为3.3.3及以上版本,并在/etc/profile里配置环境变量。命令行进入在源码根目录下,执行 ./make-distribution.sh -name hadoop2-without-hive -tgz -Pyarn,hadoop-provided,hadoop-2.6,parquet-provided若编译过程出现内存不足的情况,需要在运行编译命令之前先运行:export MAVEN_OPTS=-Xmx2g -XX:MaxPermSize=512M -XX:ReservedCodeCacheSize=512m来设置Maven的内存。编译过程由于要下载很多Maven依赖的jar包,需要时间较长(大概一两个小时),要保证网络状况良好,不然很容易编译失败。若出现以下结果,则编译成功:编译成功后,会在源码根目录下多出一个文件(红色部分):spark-1.5.0-cdh5.5.1-bin-hadoop2-without-hive.tgz2.2 安装Spark 将编译完生成的spark-1.5.0-cdh5.5.1-bin-hadoop2-without-hive.tgz拷贝到Spark的安装路径,并用 tar -xzvf 命令解压 配置环境变量 $vim /etc/profile export SPARK_HOME=spark安装路径 $source /etc/profile2.3 配置Spark配置spark-env.sh、slaves和spark-defaults.conf三个文件 spark-env.sh主要配置JAVA_HOME、SCALA_HOME、HADOOP_HOME、HADOOP_CONF_DIR、SPARK_MASTER_IP等export JAVA_HOME=/usr/lib/jvm/javaexport SCALA_HOME=/root/scalaexport HADOOP_HOME=/usr/lib/hadoopexport HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoopexport SPARK_LAUNCH_WITH_SCALA=0export SPARK_WORKER_MEMORY=1gexport SPARK_DRIVER_MEMORY=1gexport SPARK_MASTER_IP=1export SPARK_LIBRARY_PATH=/root/spark-without-hive/libexport SPARK_MASTER_WEBUI_PORT=18080export SPARK_WORKER_DIR=/root/spark-without-hive/workexport SPARK_MASTER_PORT=7077export SPARK_WORKER_PORT=7078export SPARK_LOG_DIR=/root/spark-without-hive/logexport SPARK_PID_DIR=/root/spark-without-hive/run slaves(将所有节点都加入,master节点同时也是worker节点)Goblin01Goblin02Goblin03Goblin04 spark-defaults.conf spark.master yarn-cluster spark.home /root/spark-without-hive spark.eventLog.enabled true spark.eventLog.dir hdfs:/Goblin01:8020/spark-log spark.serializer org.apache.spark.serializer.KryoSerializer spark.executor.memory 1g spark.driver.memory 1g spark.executor.extraJavaOptions -XX:+PrintGCDetails -Dkey=value -Dnumbers=one two threespark.master指定Spark运行模式,可以是yarn-client、yarn-cluster.spark.home指定SPARK_HOME路径spark.eventLog.enabled需要设为truespark.eventLog.dir指定路径,放在master节点的hdfs中,端口要跟hdfs设置的端口一致(默认为8020),否则会报错spark.executor.memory和spark.driver.memory指定executor和dirver的内存,512m或1g,既不能太大也不能太小,因为太小运行不了,太大又会影响其他服务三、配置YARN配置yarn-site.xml,跟hdfs-site.xml在同一个路径下($HADOOP_HOME/etc/hadoop) yarn.resourcemanager.scheduler.class org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler四、配置Hive 添加spark依赖到hive(将spark-assembly-1.5.0-cdh5.5.1-hadoop2.6.0.jar拷贝到$HIVE_HOME/lib目录下)进入SPARK_HOMEcp spark-assembly-1.5.0-cdh5.5.1-hadoop2.6.0.jar /usr/lib/hive/lib 配置hive-site.xml配置的内容与spark-defaults.conf相同,只是形式不一样,以下内容是追加到hive-site.xml文件中的,并且注意前两个配置,如果不设置hive的spark引擎用不了,在后面会有详细的错误说明。 hive.execution.engine spark hive.enable.spark.execution.engine true spark.home /root/spark-without-hive spark.master yarn-client spark.enentLog.enabled true spark.enentLog.dir hdfs:/Goblin01:8020/spark-log spark.serializerorg.apache.spark.serializer.KryoSerializer spark.executor.memeory 1g spark.driver.memeory 1g spark.executor.extraJavaOptions -XX:+PrintGCDetails -Dkey=value -Dnumbers=one two three五、验证是否安装配置成功1.验证Spark集群注意:在启动Spark集群之前,要确保Hadoop集群和YARN均已启动 进入$SPARK_HOME目录,执行:./sbin/start-all.sh用jps命令查看51节点上的master和worker,52、53、54节点上的worker是否都启动了 同样在$SPARK_HOME目录下,提交计算Pi的任务,验证Spark集群是否能正常工作,运行如下命令./bin/spark-submit -class org.apache.spark.examples.SparkPi -master yarn -deploy-mode client lib/spark-examples-1.5.0-cdh5.5.1-hadoop2.6.0.jar 10若无报错,并且算出Pi的值,说明Spark集群能正常工作2.验证Hive on Spark是否可用 命令行输入 hive,进入hive CLI set hive.execution.engine=spark; (将执行引擎设为Spark,默认是mr,退出hive CLI后,回到默认设置。若想让引擎默认为Spark,需要在hive-site.xml里设置) create table test(ts BIGINT,line STRING); (创建表) select count(*) from test; 若整个过程没有报错,并出现正确结果,则Hive on Spark配置成功。六、遇到的问题0编译spark基于maven有两种方式 用mvn 命令编译./build/mvn -Pyarn -Phadoop-2.6 -Dhadoop.version=2.6.0 -DskipTests clean package 编译到倒数MQTT模块一直报错,而且编译出的文件比较大,不适合安装集群,因此不推荐。使用Intellij IDEA maven 插件报错如下: 使用spark提供的预编译脚本,网络状况稳定,会编译出需要的安装版本,*推荐*。命令./make-distribution.sh -name hadoop2-without-hive -tgz -Pyarn,hadoop-provided,hadoop-2.6,parquet-provided结果如上文所述。1运行:./bin/spark-submit -class org.apache.spark.examples.SparkPi -master yarn lib/spark-examples-1.5.0-cdh5.5.1-hadoop2.6.0.jar 10报错:原因:hdfs的默认端口为8020 ,而我们在spark-default.conf中配置成了8021端口,导致连接不上HDFS报错spark.eventLog.enabled truespark.eventLog.dir hdfs:/Goblin01:8021/spark-log解决:配置spark-default.conf中的spark.eventLog.dir 为本地路径,也就是不持久化日志到hdfs上,也就没有和hdfs的通行orspark-default.conf 注释掉 spark.eventLog.enabled trueor在spark-default.conf里配置的eventLog端口跟hdfs的默认端口(8020)一致or由于配置的hdfs是高可用的,51,52都可以作为namenode,我们的spark集群的主节点在51上,当51上的namenode变成standby,导致无法访问hdfs的8020端口(hdfs默认端口),也就是说在51上读不出hdfs上spark-log的内容,在spark-default.conf中配置为spark.eventLog.dir hdfs:/Goblin01:8021/spark-log,如果发生这种情况,直接kill掉52,让namenode只在51上运行。(这个后面要搭建spark的高可用模式解决)2运行:在hive里设置引擎为spark,执行select count(*) from a;报错:Failed to execute spark task, with exception org.apache.hadoop.hive.ql.metadata.HiveException(Unsupported execution engine: Spark. Please set hive.execution.engine=mr)解决:这是因为CDH版的Hive默认运行支持Hive on Spark(By default, Hive on Spark is not enabled).需要用cloudera manager(cloudera官网给的的方法,但是要装cloudera manager,比较麻烦,不建议)Go to the Hive service.Click the Configuration tab.Enter Enable Hive on Sparkin the Search field.Check the box forEnable Hive on Spark (Unsupported).Locate theSpark On YARN Serviceand clickSPARK_ON_YARN.Click Save Changes to commit the changes.或者在hive-site.xml添加配置(简单、推荐)hive.enable.spark.execution.enginetrue3终端输入hive无法启动hive CLI原因:namenode挂了解决:重启namenode4运行:./bin/spark-submit -class org.apache.spark.examples.SparkPi -master yarn -deploy-mode client lib/spark-examples-1.5.0-cdh5.5.1-hadoop2.6.0.jar 10问题:没有报错,但是出现以下情况,停不下来原因:1. ResourceManager或者NodeManager挂掉,一直没有NodeManager响应,任务无法执行,所有停不下来。2. 还有一种情况是spark有别的application在运行,导致本次spark任务的等待或者失败解决:1. 对于原因1,重启ResourceManager和NodeManager。service hadoop-yarn-resourcemanager start;service hadoop-yarn-nodemanager start;1. 对于原因2,解决办法是在hadoop配置文件中设置yarn的并行度,在/etc/hadoop/conf/capacity-scheduler.xml文件中配置yar
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 第三节 生活中的圆周运动说课稿-2025-2026学年高中物理粤教版2019必修 第二册-粤教版2019
- 第5课 四点底与皿字底教学设计-2025-2026学年小学书法练习指导五年级上册西泠版
- 化肥厂咨询供应商考核办法
- 2025合同样本:网络直播主播合同示范文本
- 广东省廉江市实验学校高中政治 6.2 股票、债券和保险1说课稿(必修1)
- 第1课 走进人工智能 说课稿- 2024-2025学年浙教版(2023)初中信息技术八年级下册
- 木材销售合同
- 第3节 测量液体和固体的密度说课稿-2025-2026学年初中物理人教版2024八年级上册-人教版2024
- 2.2.2大气热力环流-教学设计2023-2024学年高中地理人教版(2019)必修一
- 古诗词诵读《桂枝香·金陵怀古》教学设计高中语文必修下册同步教学设计(统编版2019)
- 重离子、质子治疗前景与适应症-武汉
- 组织行为学(-)(英文版)课件
- 商务谈判(完整版)课件
- 小学数学教师新课标考试试题
- 小学数学北师大四年级上册五方向与位置四上《用数对确定位置》北师大版李雪梅PPT
- 步进电机控制系统课件
- 2022年混凝土预制U型槽单元工程质量评定表
- 井喷及井喷失控案例教育
- 职业发展与就业创业指导ppt课件完整版
- 挠度计算模板表格(自动版)
- 宝钢集团生产安全事故案例汇编
评论
0/150
提交评论