前期工作

  1. 安装JDK
  2. 安装Hadoop
  3. 安装MySQL

安装Hive

下载Hive安装包

可以从 Apache 其中一个镜像站点中下载最新稳定版的 Hive, apache-hive-2.1.1-bin.tar.gz。

解压安装Hive

使用以下命令安装 Hive:

sudo mv apache-hive-2.1.1-bin.tar.gz /opt
cd /opt
sudo tar -xzvf apache-hive-2.1.1-bin.tar.gz    ##解压
sudo ln -s apache-hive-2.1.1-bin hive    ##创建软链接

设置 Hive环境变量

编辑 .bash_profile 文件, 在其中添加以下内容:

# Hive Env
export HIVE_HOME=/opt/hive
export PATH=$PATH:$HIVE_HOME/bin

使环境变量生效:

source .bash_profile

配置Hive

配置文件重命名

在运行 Hive 之前需要使用以下命令修改配置文件:

cd /opt/hive/conf
cp hive-env.sh.template hive-env.sh
cp hive-default.xml.template hive-site.xml
cp hive-log4j2.properties.template hive-log4j2.properties
cp hive-exec-log4j2.properties.template hive-exec-log4j2.properties

修改hive-env.sh

因为 Hive 使用了 Hadoop, 需要在 hive-env.sh 文件中指定 Hadoop 安装路径:

export JAVA_HOME=/opt/java    ##Java路径
export HADOOP_HOME=/opt/hadoop   ##Hadoop安装路径
export HIVE_HOME=/opt/hive    ##Hive安装路径
export HIVE_CONF_DIR=/opt/hive/conf    ##Hive配置文件路径

创建HDFS目录

在 Hive 中创建表之前需要创建以下 HDFS 目录并给它们赋相应的权限。

hdfs dfs -mkdir -p /user/hive/warehouse
hdfs dfs -mkdir -p /user/hive/tmp
hdfs dfs -mkdir -p /user/hive/log
hdfs dfs -chmod g+w /user/hive/warehouse
hdfs dfs -chmod g+w /usr/hive/tmp
hdfs dfs -chmod g+w /usr/hive/log

修改hive-site.xml

将 hive-site.xml 文件中以下几个配置项的值设置成上一步中创建的几个路径。

<property><name>hive.exec.scratchdir</name><value>/user/hive/tmp</value><description>HDFS root scratch dir for Hive jobs which gets created with write all (733) permission. For each connecting user, an HDFS scratch dir: ${hive.exec.scratchdir}/&lt;username&gt; is created, with ${hive.scratch.dir.permission}.</description></property><property><name>hive.metastore.warehouse.dir</name><value>/user/hive/warehouse</value><description>location of default database for the warehouse</description></property>
<property><name>hive.querylog.location</name><value>/user/hive/log</value><description>Location of Hive run time structured log file</description></property>

Hive Metastore

默认情况下, Hive 的元数据保存在内嵌的 Derby 数据库里, 但一般情况下生产环境会使用 MySQL 来存放 Hive 元数据。

创建数据库和用户

假定你已经安装好 MySQL。下面创建一个 hive 数据库用来存储 Hive 元数据,且数据库访问的用户名和密码都为 hive。

mysql> CREATE DATABASE hive;
mysql> USE hive;
mysql> CREATE USER 'hive'@'localhost' IDENTIFIED BY 'hive';
mysql> GRANT ALL ON hive.* TO 'hive'@'localhost' IDENTIFIED BY 'hive';
mysql> GRANT ALL ON hive.* TO 'hive'@'%' IDENTIFIED BY 'hive';
mysql> FLUSH PRIVILEGES;
mysql> quit;

修改hive-site.xml

需要在 hive-site.xml 文件中配置 MySQL 数据库连接信息。

<property><name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true&amp;characterEncoding=UTF-8&amp;useSSL=false</value></property><property><name>javax.jdo.option.ConnectionDriverName</name><value>com.mysql.jdbc.Driver</value></property><property><name>javax.jdo.option.ConnectionUserName</name><value>hive</value></property><property><name>javax.jdo.option.ConnectionPassword</name><value>hive</value></property>

运行Hive

在命令行运行 hive 命令时必须保证以下两点:

  1. HDFS 已经启动。可以使用 start-dfs.sh 脚本来启动 HDFS。
  2. MySQL Java 连接器添加到 $HIVE_HOME/lib 目录下。我安装时使用的是 mysql-connector-java-5.1.39.jar。

从 Hive 2.1 版本开始, 我们需要先运行 schematool 命令来执行初始化操作。

schematool -dbType mysql -initSchema

终端输出信息如下:

执行成功后,可以使用 Sequel Pro 查看元数据库 hive 是否已经创建成功。

要使用 Hive CLI(Hive command line interface), 可以在终端输入以下命令:

hive

启动信息如下:

使用 show tables 来显示所有的表:


Hive用户接口—Hive Web接口HWI的操作及使用

问题导读:

1、Hive提供了哪三种用户访问接口?

2、如何手动构建hive-hwi-*.war安装包?

3、hwi 服务启动命令是什么?

4、hwi启动之前需要将哪两个包拷贝到hive安装目录的lib中?

5、使用hwi Web访问Hive数据库之前,需要首先启动哪个服务?

6、hwi的默认监听端口是?

Hive提供了三种用户接口:CLI、HWI和客户端方式。其中最常用的的就是CLI,CLI启动的时候,会同时启动一个Hive副本。Client是Hive的客户端,用户连接至Hive Server。在启动 Client模式的时候,需要指出Hive Server所在节点,并且在该节点启动Hive Server。 HWI是通过浏览器访问Hive。本文介绍Hive Web访问接口。

HWI是Hive Web Interface的简称,我使用的Hive的版本是Hive0.13.1。

一、终端启动HWI服务

[html]  view plain copy
  1. [hadoopUser@secondmgt conf]$ hive --service hwi
  2. ls: cannot access /home/hadoopUser/cloud/hive/apache-hive-0.13.1-bin/lib/hive-hwi-*.war: No such file or directory
  3. 15/01/09 15:49:35 INFO hwi.HWIServer: HWI is starting up
  4. 15/01/09 15:49:35 INFO Configuration.deprecation: mapred.reduce.tasks is deprecated. Instead, use mapreduce.job.reduces
  5. 15/01/09 15:49:35 INFO Configuration.deprecation: mapred.min.split.size is deprecated. Instead, use mapreduce.input.fileinputformat.split.minsize
  6. 15/01/09 15:49:35 INFO Configuration.deprecation: mapred.reduce.tasks.speculative.execution is deprecated. Instead, use mapreduce.reduce.speculative
  7. 15/01/09 15:49:35 INFO Configuration.deprecation: mapred.min.split.size.per.node is deprecated. Instead, use mapreduce.input.fileinputformat.split.minsize.per.node
  8. 15/01/09 15:49:35 INFO Configuration.deprecation: mapred.input.dir.recursive is deprecated. Instead, use mapreduce.input.fileinputformat.input.dir.recursive
  9. 15/01/09 15:49:35 INFO Configuration.deprecation: mapred.min.split.size.per.rack is deprecated. Instead, use mapreduce.input.fileinputformat.split.minsize.per.rack
  10. 15/01/09 15:49:35 INFO Configuration.deprecation: mapred.max.split.size is deprecated. Instead, use mapreduce.input.fileinputformat.split.maxsize
  11. 15/01/09 15:49:35 INFO Configuration.deprecation: mapred.committer.job.setup.cleanup.needed is deprecated. Instead, use mapreduce.job.committer.setup.cleanup.needed
  12. 15/01/09 15:49:35 INFO mortbay.log: Logging to org.slf4j.impl.Log4jLoggerAdapter(org.mortbay.log) via org.mortbay.log.Slf4jLog
  13. 15/01/09 15:49:35 INFO mortbay.log: jetty-6.1.26
  14. 15/01/09 15:49:35 INFO mortbay.log: Started SocketConnector@0.0.0.0:9999

由上可知,我们使用hive --service hwi在终端启动HWI服务,但是开始报了异常错误,hive-hwi-*.war包不存在。

        注意:报错误的原因是,Hive目前的发行包里没有hwi的war包文件,这个问题在0.13和0.14上都存在,没有这个war包就不能启动hwi服务。

   解决办法:从源码手动build出这个war包,具体过程如第二步。

二、手动构建Hive hwi war包

        1、从Hive官网下载Hive对应版本的源码apache-hive-0.13.1-src.tar.gz,下载后解压,并进入hwi目录中。hwi目录下的web目录就是HWI的web界面目录,如下:

[html]  view plain copy
  1. [hadoopUser@secondmgt Downloads]$ tar -zxvf apache-hive-0.13.1-src.tar.gz
  2. [hadoopUser@secondmgt hwi]$ pwd
  3. /home/hadoopUser/Downloads/apache-hive-0.13.1-src/hwi
[html]  view plain copy
  1. [hadoopUser@secondmgt hwi]$ jar cvfM0 hive-hwi-0.13.1.war -C web/ .
  2. adding: navbar.jsp(in = 1345) (out= 1345)(stored 0%)
  3. adding: session_remove.jsp(in = 2359) (out= 2359)(stored 0%)
  4. adding: session_kill.jsp(in = 2236) (out= 2236)(stored 0%)
  5. adding: show_database.jsp(in = 2346) (out= 2346)(stored 0%)
  6. adding: session_list.jsp(in = 2298) (out= 2298)(stored 0%)
  7. adding: left_navigation.jsp(in = 1553) (out= 1553)(stored 0%)
  8. adding: session_result.jsp(in = 2488) (out= 2488)(stored 0%)
  9. adding: view_file.jsp(in = 2653) (out= 2653)(stored 0%)
  10. adding: session_create.jsp(in = 2690) (out= 2690)(stored 0%)
  11. adding: WEB-INF/(in = 0) (out= 0)(stored 0%)
  12. adding: WEB-INF/web.xml(in = 1438) (out= 1438)(stored 0%)
  13. adding: authorize.jsp(in = 2729) (out= 2729)(stored 0%)
  14. adding: css/(in = 0) (out= 0)(stored 0%)
  15. adding: css/bootstrap.min.css(in = 90193) (out= 90193)(stored 0%)
  16. adding: img/(in = 0) (out= 0)(stored 0%)
  17. adding: img/glyphicons-halflings.png(in = 4352) (out= 4352)(stored 0%)
  18. adding: img/glyphicons-halflings-white.png(in = 4352) (out= 4352)(stored 0%)
  19. adding: session_manage.jsp(in = 6738) (out= 6738)(stored 0%)
  20. adding: diagnostics.jsp(in = 2365) (out= 2365)(stored 0%)
  21. adding: show_table.jsp(in = 4996) (out= 4996)(stored 0%)
  22. adding: index.jsp(in = 1876) (out= 1876)(stored 0%)
  23. adding: error_page.jsp(in = 1867) (out= 1867)(stored 0%)
  24. adding: show_databases.jsp(in = 2096) (out= 2096)(stored 0%)
  25. adding: session_diagnostics.jsp(in = 2489) (out= 2489)(stored 0%)
  26. adding: session_history.jsp(in = 3150) (out= 3150)(stored 0%)

2、执行jar cvfM0 hive-hwi-0.13.1.war -C web/ .打包命令,即可生成我们需要的hive-hwi-0.13.1-war,并将其拷贝到hive安装目录lib目录中如下:

[html]  view plain copy
  1. [hadoopUser@secondmgt hwi]$ ls
  2. hive-hwi-0.13.1.war  hive-hwi.iml  pom.xml  src  web

三、在hive-site.xml中添加HWI配置

我们需要将hive-default.xml中关于HWI的一些默认配置在hive-site.xml中按照自己的要求配置。hive-site.xml中关于HWI的配置如下:

[html]  view plain copy
  1. <property>
  2. <name>hive.hwi.war.file</name>
  3. <value>lib/hive-hwi-0.13.1.war</value>
  4. <description>This sets the path to the HWI war file, relative to ${HIVE_HOME}. </description>
  5. </property>
  6. <property>
  7. <name>hive.hwi.listen.host</name>
  8. <value>192.168.2.133</value>
  9. <description>This is the host address the Hive Web Interface will listen on</description>
  10. </property>
  11. <property>
  12. <name>hive.hwi.listen.port</name>
  13. <value>9999</value>
  14. <description>This is the port the Hive Web Interface will listen on</description>
  15. </property>

hive.hwi.war.file属性就是指定Hive Web用户接口程序安装包位置,其安装包即为我们第二部打包的文件。

四、重新启动HWI服务

[html]  view plain copy
  1. [hadoopUser@secondmgt conf]$ hive --service hwi
  2. 15/01/09 16:17:13 INFO hwi.HWIServer: HWI is starting up
  3. 15/01/09 16:17:14 INFO Configuration.deprecation: mapred.reduce.tasks is deprecated. Instead, use mapreduce.job.reduces
  4. 15/01/09 16:17:14 INFO Configuration.deprecation: mapred.min.split.size is deprecated. Instead, use mapreduce.input.fileinputformat.split.minsize
  5. 15/01/09 16:17:14 INFO Configuration.deprecation: mapred.reduce.tasks.speculative.execution is deprecated. Instead, use mapreduce.reduce.speculative
  6. 15/01/09 16:17:14 INFO Configuration.deprecation: mapred.min.split.size.per.node is deprecated. Instead, use mapreduce.input.fileinputformat.split.minsize.per.node
  7. 15/01/09 16:17:14 INFO Configuration.deprecation: mapred.input.dir.recursive is deprecated. Instead, use mapreduce.input.fileinputformat.input.dir.recursive
  8. 15/01/09 16:17:14 INFO Configuration.deprecation: mapred.min.split.size.per.rack is deprecated. Instead, use mapreduce.input.fileinputformat.split.minsize.per.rack
  9. 15/01/09 16:17:14 INFO Configuration.deprecation: mapred.max.split.size is deprecated. Instead, use mapreduce.input.fileinputformat.split.maxsize
  10. 15/01/09 16:17:14 INFO Configuration.deprecation: mapred.committer.job.setup.cleanup.needed is deprecated. Instead, use mapreduce.job.committer.setup.cleanup.needed
  11. 15/01/09 16:17:14 INFO mortbay.log: Logging to org.slf4j.impl.Log4jLoggerAdapter(org.mortbay.log) via org.mortbay.log.Slf4jLog
  12. 15/01/09 16:17:14 INFO mortbay.log: jetty-6.1.26
  13. 15/01/09 16:17:14 INFO mortbay.log: Extract /home/hadoopUser/cloud/hive/apache-hive-0.13.1-bin/lib/hive-hwi-0.13.1.war to /tmp/Jetty_192_168_2_133_9999_hive.hwi.0.13.1.war__hwi__gybk6o/webapp
  14. 15/01/09 16:17:14 INFO mortbay.log: Started SocketConnector@192.168.2.133:9999

从启动日志来看,启动正常,不再报第一步的错误。

五、启动Hive metastore服务

       注意:不管是使用Hive CLI、客户端还是HWI访问Hive,都需要首先启动Hive 元数据服务,否则无法访问Hive数据库。如下:

[html]  view plain copy
  1. [hadoopUser@secondmgt ~]$ hive --service metastore
  2. Starting Hive Metastore Server
  3. 15/01/09 16:38:52 INFO Configuration.deprecation: mapred.reduce.tasks is deprecated. Instead, use mapreduce.job.reduces
  4. 15/01/09 16:38:52 INFO Configuration.deprecation: mapred.min.split.size is deprecated. Instead, use mapreduce.input.fileinputformat.split.minsize
  5. 15/01/09 16:38:52 INFO Configuration.deprecation: mapred.reduce.tasks.speculative.execution is deprecated. Instead, use mapreduce.reduce.speculative
  6. 15/01/09 16:38:52 INFO Configuration.deprecation: mapred.min.split.size.per.node is deprecated. Instead, use mapreduce.input.fileinputformat.split.minsize.per.node
  7. 15/01/09 16:38:52 INFO Configuration.deprecation: mapred.input.dir.recursive is deprecated. Instead, use mapreduce.input.fileinputformat.input.dir.recursive

五、使用网页访问Hive

1、我们在浏览器中输入:http://192.168.2.133:9999/hwi,192.168.2.133是我Hive安装的主机IP,可以修改为你对应的主机IP。Hive Web功能还是比较简单、界面也比较简陋,首页如下:

2、点击"Browse Schema" 查看Hive中的数据库,由下图可知,我的Hive中有两个数据库,分别是default和hive

3、点击“hive”,查看hive数据库中有哪些表,如下,我的hive数据库中只有一个“querysglog”表:

六、在Web界面执行HQL操作

1、创建session

我们在Web来执行一些Hive 查询操作,感受下Hive web用户接口。在执行查询之前,需要先创建一个session,点击“Create Session”,创建session,并取名为gxnzx,如下:

2、查看session,点击“List Sessions”,如下

3、在上图中,点击“Manager”后,输入结果文件名,和查询语句,执行提交即可执行查询操作,结果将保持在创建的文件名中。

 注意:多个语句之间一定要使用分号分开。

4、点击上图中“View File”即可查看查询结果。

总结:

如果使用过CLI的朋友看了上面的介绍,一定会发现一个很严重的问题:执行的过程没有提示。我们不知道某一个查询执行是什么时候结束的。但是在服务终端可以看到执行过程日志信息。

总之,使用Hive的Web HWI用户接口很不方便,一般我们都是用CLI操作Hive。

附:

使用Hive Web过程中,可能还会遇到其他一些问题和异常错误,我讲自己遇到的异常和错误及解决办法总结如下:

         1、tools.jar问题

在浏览器中输入http://192.168.2.133:9999/hwi时,页面打不开并报如下错误

[html]  view plain copy
  1. Unable to find a javac compiler;
  2. com.sun.tools.javac.Main is not on the classpath.
  3. Perhaps JAVA_HOME does not point to the JDK.
  4. It is currently set to "/home/hadoopUser/cloud/jdk/jdk1.7.0_60/jre"

出现此问题是因为java.home指到$JAVA_HOME/jre下了,而其lib下的tools.jar跟$JAVA_HOME/lib/tools.jar不一样,编译jsp的时候需要用到后者.

解决办法: 将$JAVA_HOME/lib/tools。jar复制到Hive的lib目录中,如下:

cp /usr/Java/jdk1.7.0_55/lib/tools.jar /usr/local/hive/lib/
                          hive --service hwi    重启即可。

  2、hive的元数据服务未启动,报以下错误:

[html]  view plain copy
  1. 15/01/09 16:37:58 INFO hive.metastore: Trying to connect to metastore with URI thrift://192.168.2.133:9083
  2. 15/01/09 16:37:58 WARN hive.metastore: Failed to connect to the MetaStore Server...
  3. 15/01/09 16:37:58 INFO hive.metastore: Waiting 1 seconds before next connection attempt.

解决办法:不管使用哪种方式访问hive,都需要首先启动hive的metaserver服务。

问题总结

SSL问题

启动 hive 时,提示以下信息:

Sat May 21 10:25:12 CST 2016 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL
connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.

解决方法:在 hive-site.xml 配置文件中 javax.jdo.option.ConnectionURL 配置项的值上加上 useSSL=false。即最后的配置如下:

<property><name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true&amp;useUnicode=true&amp;characterEncoding=UTF-8&amp;useSSL=false</value><description>JDBC connect string for a JDBC metastore</description></property>

initSchema问题

启动 hive 时,提示以下信息:

Exception in thread "main" java.lang.RuntimeException: Hive metastore database is not initialized. Please use schematool (e.g. ./schematool -initSchema -dbType ...) to create the schema. If needed, don't forget to include the option to auto-create the underlying database in your JDBC connection string (e.g. ?createDatabaseIfNotExist=true for mysql)

解决方法:执行 schematool -initSchema -dbType mysql。即安装 Hive 后,在首次运行 hive 之前要执行以上命令。

相对路径问题

启动Hive时报以下错误:

Exception in thread "main"java.lang.RuntimeException: java.lang.IllegalArgumentException:java.net.URISyntaxException: Relative path in absolute URI:${system:java.io.tmpdir%7D/$%7Bsystem:user.name%7Datorg.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:444)atorg.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:672)atorg.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:616)atsun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)atsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)atjava.lang.reflect.Method.invoke(Method.java:606)atorg.apache.hadoop.util.RunJar.main(RunJar.java:160)
Caused by: java.lang.IllegalArgumentException:java.net.URISyntaxException: Relative path in absolute URI:${system:java.io.tmpdir%7D/$%7Bsystem:user.name%7Datorg.apache.hadoop.fs.Path.initialize(Path.java:148)atorg.apache.hadoop.fs.Path.<init>(Path.java:126)atorg.apache.hadoop.hive.ql.session.SessionState.createSessionDirs(SessionState.java:487)atorg.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:430)... 7more

解决方案:将 hive-site.xml 中的 ${system:java.io.tmpdir} 和 ${system:user.name} 分别替换成 /tmp 和 ${user.name}

mysql-connector-java版本问题

启动Hive时报以下错误:

Exception in thread "main" java.lang.RuntimeException: org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClientat org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:578)at org.apache.hadoop.hive.ql.session.SessionState.beginStart(SessionState.java:518)at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:705)at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:641)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:498)at org.apache.hadoop.util.RunJar.run(RunJar.java:221)at org.apache.hadoop.util.RunJar.main(RunJar.java:136)
Caused by: org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClientat org.apache.hadoop.hive.ql.metadata.Hive.registerAllFunctionsOnce(Hive.java:226)at org.apache.hadoop.hive.ql.metadata.Hive.<init>(Hive.java:366)at org.apache.hadoop.hive.ql.metadata.Hive.create(Hive.java:310)at org.apache.hadoop.hive.ql.metadata.Hive.getInternal(Hive.java:290)at org.apache.hadoop.hive.ql.metadata.Hive.get(Hive.java:266)at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:545)... 9 more
Caused by: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClientat org.apache.hadoop.hive.metastore.MetaStoreUtils.newInstance(MetaStoreUtils.java:1627)at org.apache.hadoop.hive.metastore.RetryingMetaStoreClient.<init>(RetryingMetaStoreClient.java:80)at org.apache.hadoop.hive.metastore.RetryingMetaStoreClient.getProxy(RetryingMetaStoreClient.java:130)at org.apache.hadoop.hive.metastore.RetryingMetaStoreClient.getProxy(RetryingMetaStoreClient.java:101)at org.apache.hadoop.hive.ql.metadata.Hive.createMetaStoreClient(Hive.java:3317)at org.apache.hadoop.hive.ql.metadata.Hive.getMSC(Hive.java:3356)at org.apache.hadoop.hive.ql.metadata.Hive.getMSC(Hive.java:3336)at org.apache.hadoop.hive.ql.metadata.Hive.getAllFunctions(Hive.java:3590)at org.apache.hadoop.hive.ql.metadata.Hive.reloadFunctions(Hive.java:236)at org.apache.hadoop.hive.ql.metadata.Hive.registerAllFunctionsOnce(Hive.java:221)... 14 more
Caused by: java.lang.reflect.InvocationTargetExceptionat sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)at java.lang.reflect.Constructor.newInstance(Constructor.java:423)at org.apache.hadoop.hive.metastore.MetaStoreUtils.newInstance(MetaStoreUtils.java:1625)... 23 more
Caused by: javax.jdo.JDODataStoreException: Exception thrown obtaining schema column information from datastore
NestedThrowables:
java.sql.SQLException: Column name pattern can not be NULL or empty.at org.datanucleus.api.jdo.NucleusJDOHelper.getJDOExceptionForNucleusException(NucleusJDOHelper.java:543)at org.datanucleus.api.jdo.JDOPersistenceManager.jdoMakePersistent(JDOPersistenceManager.java:720)at org.datanucleus.api.jdo.JDOPersistenceManager.makePersistent(JDOPersistenceManager.java:740)at org.apache.hadoop.hive.metastore.ObjectStore.setMetaStoreSchemaVersion(ObjectStore.java:7763)at org.apache.hadoop.hive.metastore.ObjectStore.checkSchema(ObjectStore.java:7657)at org.apache.hadoop.hive.metastore.ObjectStore.verifySchema(ObjectStore.java:7632)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:498)at org.apache.hadoop.hive.metastore.RawStoreProxy.invoke(RawStoreProxy.java:101)at com.sun.proxy.$Proxy21.verifySchema(Unknown Source)at org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.getMS(HiveMetaStore.java:547)at org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.createDefaultDB(HiveMetaStore.java:612)at org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.init(HiveMetaStore.java:398)at org.apache.hadoop.hive.metastore.RetryingHMSHandler.<init>(RetryingHMSHandler.java:78)at org.apache.hadoop.hive.metastore.RetryingHMSHandler.getProxy(RetryingHMSHandler.java:84)at org.apache.hadoop.hive.metastore.HiveMetaStore.newRetryingHMSHandler(HiveMetaStore.java:6396)at org.apache.hadoop.hive.metastore.HiveMetaStoreClient.<init>(HiveMetaStoreClient.java:236)at org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient.<init>(SessionHiveMetaStoreClient.java:70)... 28 more

解决方案:将 $HIVE_HOME/lib 下 的 mysql-connector-java-6.0.3.jar 替换成 mysql-connector-java-5.1.39.jar。 原因分析:mysql-connector-java 6.x 版本 和 5.1.x 版本不兼容 , nullNamePatternMatchesAll 连接属性的默认值在 mysql-connector-java 5.1 和 6.0 之间发生了改变. 在 5.1 版本中默认值是 true, 而 6.0 版本中默认值是 false。可以参考文章 https://liquibase.jira.com/browse/CORE-2723

Hive 2.1.1安装配置相关推荐

  1. Hive(一)安装配置

    Hive(一)安装&配置@你宝爷 一.环境搭建 1.1.MySql安装 #检查本机是否安装过MySql rpm -qa|grep mariadb #用此命令卸载mariadb sudo rpm ...

  2. Apache Hive 2.1.1 安装配置超详细过程,配置hive、beeline、hwi、HCatalog、WebHCat等组件...

    2019独角兽企业重金招聘Python工程师标准>>> 在Docker环境成功搭建了Apache Hadoop 2.8 分布式集群,并实现了NameNode HA.ResourceM ...

  3. 【干货】Apache Hive 2.1.1 安装配置超详细过程,配置hive、beeline、hwi、HCatalog、WebHCat等组件...

    在Docker环境成功搭建了Apache Hadoop 2.8 分布式集群,并实现了NameNode HA.ResourceManager HA之后(详见我的另一篇博文:Apache Hadoop 2 ...

  4. 新的比较详细的hive安装教程,包含:hadoop的安装配置,hive安装详细教程,大数据下hive详细配置和简单使用和hive元数据迁移相关安装配置操作

    简介:这是大数据里安装hive比较详细的教程,包括安装hive时hadoop的相关配置,hive安装,hive 之后的mysql安装,hive的元素配置到mysql相关配置,hive常见属性的相关配置 ...

  5. Hive 0.12.0安装配置

    1:解压 tar zxf hive-0.12.0-bin.tar.gz mv hive-0.12.0-bin hadoop 移动到hadoop目录 2:配置环境变量 [jifeng@jifeng02 ...

  6. Hadoop集群搭建(八:Hive的安装配置)

    实验 目的 要求 目的: (1)掌握数据仓库工具Hive的安装和配置: 要求: 完成Hive工具的安装和配置: Hive工具能够正常启动运行: Hive控制台命令能够正常使用: 能够正常操作数据库.表 ...

  7. hadoop安装hive及配置mysql_Hadoop系列之Hive(数据仓库)安装配置

    Hadoop系列之Hive(数据仓库)安装配置 1.在NameNode安装 cd /root/soft tar zxvf apache-hive-0.13.1-bin.tar.gz mv apache ...

  8. CentOS7下Hive的安装配置

    0.安装前提 安装配置jdk与hadoop 安装配置好mysql 1.下载上传 下载hive,地址:http://mirror.bit.edu.cn/apache/hive/ 上传到指定位置scp a ...

  9. ubuntu14.04使用MySQL数据库安装配置Hive 1.2.1

    ubuntu14.04使用MySQL数据库安装配置Hive 1.2.1 一.准备Mysql已经安装好.本人装的是navicat,图形化界面.     并在本地用root用户建立了test数据库   二 ...

最新文章

  1. 微软宣布.NET Native预览版
  2. SwiftSuspenders 1.6-深入浅出1
  3. apimonitor 神器啊 。。
  4. c++怎么保留小数位数
  5. sendfile实现文件服务器,sendfile
  6. hook(钩子函数)
  7. 网络编程----心得体会
  8. yii2 mysql 队列_yii2.0 中的队列
  9. 20200703每日一句
  10. 网站打不开怎么检查服务器,检查网站打不开的三种原因
  11. 拍出来好看的拍照软件?这4款好看好用的App简直赞到爆~
  12. 华为员工工资曝光:入职12年月薪31万,小编我瑟瑟发抖
  13. 在阿里云上搭建自己的虚拟机(学习笔记)
  14. Base64的编码(Encode)与解码(Decode)
  15. 阿里云的WEB应用防火墙(WAF)能抵挡什么攻击
  16. 我的世界刷猪人塔java版_我的世界主世界僵尸猪人刷怪塔制作教程
  17. 强网杯团队赛---Misc
  18. Maven(保姆级全详)新手入门
  19. Firebird 数据库使用心得
  20. Open3D-GUI系列教程(三)界面布局

热门文章

  1. Windows下如何更新MinGW
  2. linux 查看显卡(NVIDIA)的算力
  3. python asyncio教程_一份详细的asyncio入门教程
  4. python连接操作mysql数据库使用详解
  5. 魔众积分商城系统 v1.2.0 手机端适配增强,更易用的积分商场
  6. 警惕热门技术陷阱,数据库与存储技术规划如何制定?
  7. 运动音乐支付多面手,Garmin智能手表新品亮相CES
  8. 什么是多任务?多任务是什么?
  9. 性格决定命运,习惯决定性格
  10. Forbidden Forest 错落森林