hive安装在hadoop集群后的一些坑

时间:2022-01-08 08:17:07

1.hive on spark(spark1)

首先要想hive on spark的话版本要对齐(spark2之后的貌似还不能成功)

 在hive-site里面更改hive.execution.engine = spark

  spark.home=/home/hadoop/spark-2.3.0-bin-hadoop2.7
  spark.submit.deployMode = client or cluster

 将hive-site的${system:java.io.tmpdir} 替换成本地文件夹

  ${system:user.name}替换成${user.name}

启动hive的时候会报错主要是因为spark的包和scala的包不在classpath里

加上for f in ${SPARK_HOME}/jars/*.jar; do
     CLASSPATH=${CLASSPATH}:$f;
 done
for f in ${SCALA_HOME}/lib/*.jar; do
     CLASSPATH=${CLASSPATH}:$f;

done

之后写sparksql的话要加jars里面加上mysql的驱动以及吧core-site.xml hive-site.xml和hdfs-site.xml放到spark conf文件夹下

hive-site这个参数修改成false

<property>
    <name>hive.metastore.schema.verification</name>
    <value>false</value>
</property>

最终sparksql就可以用了。

注意:hive on spark 是通过hive来解析sql

sparksql是spark自身解析sql,所以当hive on spark 由于版本问题启动不了的时候,sparksql还是可以玩的。



2.hive on mr

hive-site.xml

     开头新增<property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>root</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>qwerasdf</value>
    </property>
   <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://192.168.0.59:3306/hive</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>

    </property>

注意在xml中已经有这几个参数,找出来删掉。

然后找到你的yarn-site.xml

加上<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
  </property>
 <property>
   <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
   <value>org.apache.hadoop.mapred.ShuffleHandler</value>

 </property>

不然会包mapreduce_shuffle不存在。