hive on spark部署

本文介绍如何从零开始搭建Hive on Spark环境,包括Hadoop、Spark及Hive的安装配置过程,特别关注解决配置过程中可能遇到的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 环境

Hive-on-MR is deprecated in Hive 2 and may not be available in the future versions. Consider using a different execution engine (i.e. tez, spark) or using Hive 1.X releases.

hive默认使用mr作为计算引擎,当进入cli时会看到以上的提示信息,刚好有hive2.1.0,查了下pom文件,依赖了spark1.6.0,版本应该可以兼容spark1.6.1,所以在此基础上搭建hive on spark环境。

2.搭建hadoop环境

参考hadoop2.6分布式环境搭建

3.搭建spark环境

参考spark1.6.1集群部署(standalone)

虽要注意的一点是,使用hive on spark模式时,spark-assembly-1.6.1-hadoop2.6.0.jar不能包含hive的相关依赖,所以需要自己编译spark源码,在编译时去掉-Phive参数。

4.安装mysql

采用mysql来存储hive的元数据,使用了免安装的mysql,安装过程略。

5.安装hive

5.1 下载hive2.1.0

https://hive.apache.org/downloads.html

5.2 解压到服务器

/usr/apache-hive-2.1.0-bin

5.3 配置环境变量

export HIVE_HOME=/usr/apache-hive-2.1.0-bin
export PATH=$PATH:$HIVE_HOME/bin:$HIVE_HOME/bin
export HCAT_HOME=$HIVE_HOME/hcatalog/

5.4 初始化hive配置

  • 创建hive-default.xml文件
cp hive-default.xml.template hive-default.xml
  • 创建hive-site.xml文件

参考hive-default.xml文件生成hive-site.xml,并将内容修改为以下:

 <property>
      <name>javax.jdo.option.ConnectionURL</name>
      <value>jdbc:mysql://master:3306/hive2?createDatabaseIfNotExist=true</value>
  </property>
  <property>
      <name>javax.jdo.option.ConnectionDriverName</name>
      <value>com.mysql.jdbc.Driver</value>
  </property>
  <property>
      <name>javax.jdo.option.ConnectionUserName</name>
      <value>root</value>
  </property>
  <property>
      <name>javax.jdo.option.ConnectionPassword</name>
      <value>mysql</value>
  </property>
  • 把mysql的驱动包旋转到$HIVE_HOME/lib目录下

  • 初始化元数据:schematool -initSchema -dbType mysql

  • 使用hive进入cli客户端验证hive是否安装成功

5.5 配置hive on spark

  • 添加spark依赖到hive环境中
scala-library.jar
spark-core_2.10-1.6.1.jar
spark-network-common_2.10-1.6.1.jar
  • 设置hive的执行引擎为spark

    • 方式一:进入cli后通过以下命令进行动态设置

      set hive.execution.engine=spark;
      set spark.master=spark://master:7077;
    • 方式二:在hive-site.xml中进行全局设置

        <property>
          <name>hive.execution.engine</name>
          <value>spark</value>
        </property>
        <property>
          <name>hive.enable.spark.execution.engine</name>
          <value>true</value>
        </property>
        <property>
          <name>spark.master</name>
          <value>spark://master:7077</value>
        </property>

    其余一些配置项参考:https://cwiki.apache.org/confluence/display/Hive/Configuration+Properties#ConfigurationProperties-Spark

  • 验证hive on spark

create table tb_user(id int,name string ,age int);
insert into tb_user values(1,'name1',11),(2,'name2',12),(3,'name3',13);

这里写图片描述

这里写图片描述

5.6 使用hiveserver2和beline

  • 启动hiveserver2服务:$HIVE_HOME/hiveserver2
  • 通过beline连接hiveserver2

这里写图片描述

6.安装配置过程遇到问题

  • 问题1
Error: Failed to open new session: java.lang.RuntimeException: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.authorize.AuthorizationException): User: root is not allowed to impersonate anonymous (state=,code=0)

在$HODOOP_HOME/hadoop/core-site.xml中添加:

<property>
    <name>hadoop.proxyuser.root.groups</name>
    <value>*</value>
</property>
<property>
    <name>hadoop.proxyuser.root.hosts</name>
    <value>*</value>
</property>
  • 问题2
Exception in thread "main" java.lang.NoSuchFieldError: SPARK_RPC_SERVER_ADDRESS


Failed to execute spark task, with exception 'org.apache.hadoop.hive.ql.metadata.HiveException(Failed to create spark client.)'
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.spark.SparkTask

spark中不能含有hive的依赖,去掉-Phive进行编译spark

参考:
https://cwiki.apache.org/confluence/display/Hive/Hive+on+Spark%3A+Getting+Started

<think>好的,我需要帮助用户在Docker环境中进行单节点的Hive on Spark部署。首先,我要理清整个流程,确保步骤正确且符合用户提供的引用内容。 用户提到了三个引用,其中引用[1]是关于安装Docker的,引用[2]和[3]涉及Hive on Spark的配置和单机部署。所以,我应该先指导用户安装Docker,然后配置Hive on Spark,并参考引用中的版本信息。 首先,用户需要安装Docker,按照引用[1]的说明进行操作。接下来,部署Hadoop、SparkHive。引用[3]提到使用Hadoop 3.3.4、Hive 3.1.3、Spark 2.4.8,可能需要确认这些版本的兼容性,但用户可能希望保持版本一致,所以直接采用这些版本。 然后,构建Docker镜像时,需要选择合适的基镜像,比如Ubuntu,并安装Java和其他依赖。需要确保Java环境变量正确配置,因为Hadoop和Spark都依赖Java。 接下来是配置Hadoop单节点模式,这包括编辑配置文件如core-site.xml、hdfs-site.xml等,以及格式化NameNode。这部分需要步骤详细,避免用户出错。 安装和配置Hive时,需要下载指定版本的Hive,并配置hive-site.xml,尤其是设置Spark相关的参数,如spark.home,引用[2]提到如果不设置SPARK_HOME,会使用默认的SparkSubmit,这可能导致问题,所以必须正确配置。 配置Hive on Spark需要将Spark的依赖包复制到Hive的lib目录,并确保Hive的配置指向正确的Spark路径。这里需要特别注意版本兼容性,如Hive 3.1.3可能对Spark 2.4.8有特定要求,需确认是否支持。 最后,启动Hadoop和Hive服务,并运行测试查询,以验证部署是否成功。用户可能遇到的常见问题包括端口冲突、配置文件错误或环境变量未正确设置,需要给出排查建议。 在整个过程中,需要确保所有步骤适用于Docker环境,比如文件挂载、网络设置等。可能还需要编写Dockerfile和docker-compose.yml来自动化部署,但用户可能需要手动执行步骤,所以分步说明更合适。 另外,生成相关问题时要围绕部署步骤、配置注意事项、版本兼容性和故障排除,帮助用户深入理解可能遇到的问题。</think>### 分步教程:Docker中单节点Hive on Spark部署 #### 1. 安装Docker环境 按照Docker官方文档安装并启动Docker[^1]: ```bash # 验证Docker安装 docker --version ``` #### 2. 准备基础镜像 使用Ubuntu镜像并安装必要依赖: ```dockerfile FROM ubuntu:20.04 RUN apt-get update && apt-get install -y \ openssh-server \ openjdk-8-jdk \ wget \ vim \ procps ENV JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 ``` #### 3. 部署Hadoop单机模式 使用Hadoop 3.3.4[^3]: ```bash wget https://downloads.apache.org/hadoop/common/hadoop-3.3.4/hadoop-3.3.4.tar.gz tar -xzvf hadoop-3.3.4.tar.gz -C /opt/ ``` 配置`etc/hadoop/core-site.xml`: ```xml <configuration> <property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> </property> </configuration> ``` 格式化HDFS: ```bash hdfs namenode -format ``` #### 4. 安装Spark 2.4.8 从Spark官网下载适配版本: ```bash wget https://archive.apache.org/dist/spark/spark-2.4.8/spark-2.4.8-bin-without-hadoop.tgz tar -xzvf spark-2.4.8-bin-without-hadoop.tgz -C /opt/ ``` 配置环境变量: ```bash export SPARK_HOME=/opt/spark-2.4.8-bin-without-hadoop export PATH=$SPARK_HOME/bin:$PATH ``` #### 5. 配置Hive 3.1.3 下载并解压Hive: ```bash wget https://downloads.apache.org/hive/hive-3.1.3/apache-hive-3.1.3-bin.tar.gz tar -xzvf apache-hive-3.1.3-bin.tar.gz -C /opt/ ``` 配置`hive-site.xml`: ```xml <property> <name>spark.home</name> <value>/opt/spark-2.4.8-bin-without-hadoop</value> <!-- 必须明确指定SPARK_HOME[^2] --> </property> <property> <name>hive.execution.engine</name> <value>spark</value> </property> ``` #### 6. 集成HiveSpark 复制Spark依赖到Hive的lib目录: ```bash cp $SPARK_HOME/jars/*.jar $HIVE_HOME/lib/ cp $HADOOP_HOME/share/hadoop/common/lib/*.jar $HIVE_HOME/lib/ ``` #### 7. 启动服务并验证 启动HDFS和YARN: ```bash start-dfs.sh && start-yarn.sh ``` 初始化Hive元数据库: ```bash schematool -initSchema -dbType derby ``` 运行Hive CLI测试Spark引擎: ```sql CREATE TABLE test (id INT); INSERT INTO test VALUES (1); SELECT * FROM test; -- 观察是否触发Spark作业 ``` ### 常见问题排查 - **Spark作业未启动**:检查`spark.home`配置路径是否正确[^2] - **类冲突错误**:确保Hive的lib目录仅包含匹配版本的Spark和Hadoop依赖 - **端口冲突**:通过`netstat -tunlp`检查9000/8080端口占用情况
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值