Hive on Spark 搭建&踩坑

41 篇文章 7 订阅
15 篇文章 1 订阅

背景:想通过jdbc连接hive的方式,用spark引擎,hive的数据,来处理业务需求。


环境:一台1C2G的ECS,渣渣机器;需要搭建集群的只需要更改yarn、slaves的配置即可。


接下来肯定会关注的问题就是版本了,版本的选择有千千万万种,这边的参考版本可在下面的参考配置中获得。


最关键的就是版本的匹配了,之前瞎配,最后会导致各种无法解决的问题。所以还是在动手前,先好好看看官方文档吧。


Hive和Spark版本匹配官方文档:

https://cwiki.apache.org/confluence/display/Hive/Hive+on+Spark:+Getting+Started


Spark和Hadoop、Scala、Java、Python等版本匹配官方文档:

http://spark.apache.org/documentation.html


----------------------------------------------------------------------------------------


首先配置Hive:

hive-site.xml增加或修改以下内容:


set spark.master=yarn-cluster;  //默认即为yarn-cluster模式,该参数可以不配置
set hive.execution.engine=spark;
set spark.eventLog.enabled=true;
set spark.eventLog.dir=hdfs://cdh5/tmp/sparkeventlog;
set spark.executor.memory=1g;           
set spark.executor.instances=50;  //executor数量,默认貌似只有2个
set spark.driver.memory=1g;  
set spark.serializer=org.apache.spark.serializer.KryoSerializer;

根据实际情况自行转换为:

<property>
<name>spark.home</name>
<value>/opt/spark-2.2.1-bin-hadoop2.7</value>
</property>

<property>
<name>spark.master</name>
<value>yarn</value>
</property>

<property>
<name>spark.executor.memory</name>
<value>800m</value>
</property>

<property>
<name>spark.executor.instances</name>
<value>5</value>
</property>

<property>
<name>spark.driver.memory</name>
<value>800m</value>
</property>

<property>
<name>spark.serializer</name>
<value>org.apache.spark.serializer.KryoSerializer</value>
</property>


hive和hadoop的环境配置就不过多赘述了,概括的来说,对于hive就是需要配置hive-env.sh和环境变量。


 Spark中相关配置:

hive-site.xml:

<configuration>

<property>
    <name>hive.metastore.uris</name>
    <value>thrift://master:9083</value>
    <description>Thrift URI for the remote metastore. Used by metastore client to connect to remote metastore.</description>
</property>

</configuration>


spark-env.sh:

export SCALA_HOME=/opt/scala-2.12.1
export JAVA_HOME=/opt/tools/jdk1.8.0_162
export HADOOP_HOME=/opt/tools/hadoop-2.7.3
export HADOOP_CONF_DIR=/opt/tools/hadoop-2.7.3/etc/hadoop
export SPARK_MASTER_IP=master
export SPARK_MASTER_INSTANCES=2
export SPARK_MASTER_PORT=7077
export SPARK_WORKER_PORT=7077
export SPARK_WORKER_MEMORY=1g
export SPARK_EXECUTOR_MEMORY=1g
export SPARK_DRIVER_MEMORY=1g
export SPARK_WORKER_CORES=1
export MASTER=spark://master:7077


spark-default.conf:

spark.master                     yarn
spark.home                       /opt/spark-2.2.1-bin-hadoop2.7
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 three"


需要配置yarn集群的,需要在slaves中添加相应的节点配置。


之后去${HADOOP_HOME}/sbin中 启动集群:




查看jps:




启动hive metastore和hiveserver2:





验证进程均已启动:



验证端口一开始监听:




启动spark:




确认启动,jps:




做到这里,没有意外的话 接下来就可以运行hive了。

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是 Hive on Spark 搭建过程的详细步骤: 1. 下载 Hadoop、SparkHive 的压缩包,并解压到指定目录下。 2. 配置环境变量,将 Hadoop、SparkHive 的 bin 目录添加到 PATH 路径中。 3. 修改 Hadoop 和 Spark 的配置文件。 - Hadoop 的配置文件:$HADOOP_HOME/etc/hadoop/core-site.xml、$HADOOP_HOME/etc/hadoop/hdfs-site.xml、$HADOOP_HOME/etc/hadoop/mapred-site.xml、$HADOOP_HOME/etc/hadoop/yarn-site.xml。 - Spark 的配置文件:$SPARK_HOME/conf/spark-env.sh、$SPARK_HOME/conf/spark-defaults.conf。 4. 配置 Hive on Spark。 - 将 $HIVE_HOME/lib 下的 spark 相关 jar 包复制到 $SPARK_HOME/jars 目录下。 - 修改 $HIVE_HOME/conf/hive-site.xml 文件,添加以下配置: ``` <property> <name>hive.execution.engine</name> <value>spark</value> </property> <property> <name>spark.master</name> <value>local[*]</value> <description>Master URL for the cluster manager.</description> </property> <property> <name>spark.submit.deployMode</name> <value>client</value> <description>Whether to launch the driver program locally ("client") or on one of the worker machines inside the cluster ("cluster")</description> </property> ``` 5. 启动 Spark 集群。 - 启动 Hadoop 集群。 - 启动 Spark 集群,可以使用以下命令: ``` $SPARK_HOME/sbin/start-all.sh ``` 6. 启动 Hive on Spark。 - 启动 HiveServer2,可以使用以下命令: ``` $HIVE_HOME/bin/hiveserver2 --service metastore & ``` - 启动 beeline 或 hive 命令行客户端,连接 HiveServer2。 7. 测试 Hive on Spark 是否正常运行。 - 在 beeline 或 hive 命令行客户端中执行以下命令: ``` CREATE TABLE test_spark(id INT, name STRING) USING org.apache.spark.sql.parquet OPTIONS (PATH '/tmp/test_spark'); INSERT INTO test_spark VALUES(1, 'test'); SELECT * FROM test_spark; ``` 如果查询结果正确,说明 Hive on Spark 搭建成功。 希望这些步骤能够帮助到你。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值