700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Hive 3.1.2Linux CentOs 安装 踩坑 Dbeaver 连接Hive

Hive 3.1.2Linux CentOs 安装 踩坑 Dbeaver 连接Hive

时间:2019-07-22 09:38:58

相关推荐

Hive 3.1.2Linux CentOs 安装 踩坑 Dbeaver 连接Hive

安装hive 3.1.2版本

前提:hadoop 3.2.2

jdk 1.8.0

mysql: 5.7

下载

wget https://mirrors.tuna./apache/hive/hive-3.1.2/apache-hive-3.1.2-bin.tar.gz --no-check-certificate

解压

tar -xzvf apache-hive-3.1.2-bin.tar.gz -C ../app

软连接

ln -s apache-hive-3.1.2-bin/ hive

配置环境变量

cdvim .bashrcexport HIVE_HOME=/home/hadoop/app/hiveexport PATH=${HIVE_HOME}/bin:${HIVE_HOME}/sbin:$PATHsource .bashrc

mysql jar包

hive 默认是derby数据库,不支持远程,也不支持多用户,所以改为mysql连接方式

先把mysql驱动包丢到lib目录下

cp mysql-connector-java-5.1.47.jar $HIVE_HOME/lib

mysql 新增用户及数据库

# 创建数据库 maggiecncreate database maggiecn;# 将所有权限赋予给该数据库,并以suju用户名登录,登录密码newpassword# % 代表 任意的客户端的IP地址 都被允许使用suju用户来远程访问grant all privileges on maggiecn.* to suju@'%' identified by 'newpassword';# 更新权限flush privileges;

修改配置文件 hive-env.sh

cd $HIVE_HOME/confmv hive-env.sh.template hive-env.shvim hive-env.sh HADOOP_HOME=/home/hadoop/app/hadoopexport HIVE_CONF_DIR=/home/hadoop/app/hive/confexport HIVE_AUX_JARS_PATH=/home/hadoop/app/hive/lib

修改配置文件 hive-site.xml

mysql 默认配的是derby数据库,derby是单用户连接的,不方便使用,改为mysql数据库存储元数据

cp hive-default.xml.template hive-site.xml

<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="configuration.xsl"?><configuration><property><name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://主机:3306/数据库?createDatabaseIfNotExist=true&amp;useSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF-8</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>password</value></property><property><name>hive.cli.print.header</name><value>true</value></property><property><name>hive.cli.print.current.db</name><value>true</value></property><property><name>hive.metastore.uris</name><value>thrift://ip:9083</value></property><property><name>hive.metastore.warehouse.dir</name><value>/usr/hive/warehouse</value></property><property><name>hive.server2.thrift.bind.host</name><value>ip</value></property><!-- 指定 hiveserver2 连接的端口号 默认10000 --><property><name>hive.server2.thrift.port</name><value>10000</value><description>Port number of HiveServer2 Thrift interface when hive.server2.transport.mode is 'binary'.</description></property></configuration>

初始化数据库

schematool -dbType mysql -initSchema

hadoop 3.2.2 lib jar 包跟hive的冲突

log4j-slf4j-impl-2.10.0.jar重复

cd $HIVE_HOME/librm log4j-slf4j-impl-2.10.0.jar ## 或者cp到其他位置,备份防止删错

guava.jar 版本冲突

hadoop版本guava是27的,hive的是19,所以删除hive目录下,把hadoop目录下的粘贴过来。

备注:删除低版本,复制高版本。

cd $HIVE_HOME/librm guava-19.0.jarcp $HADOOP_HOME/share/hadoop/common/lib/guava-27.0-jre.jar $HIVE_HOME/lib/

修改hdfs 上tmp 权限

不修改的话,hive metastore 会报错

hdfs dfs -chmod -R 777 /tmp

启动

nohup hive --service metastore >> ./nohup.out 2>&1 &nohup hive --service hiveserver2 >> ./nohup.out 2>&1 &

在linux上操作可以以下操作,进入,创建数据库或者创建数据等

cd $HIVE_HOME/bin./hive

dbeaver 连接hive

linux 有的时候敲sql还是不方便,所以还是得有个windows操作的工具。

dbeaver 这款个人认为比navicat更强大,可以连接的数据库类型更多。下载免费的版本就行,然后新建一个连接hive数据库。

点击编辑驱动

1. 原始的驱动删除,sz 下载linux以下两个文件

hadoop-common-3.2.2.jar

hive-jdbc-3.1.2-standalone.jar

sz $HADOOP_HOME/share/hadoop/common/hadoop-common-3.2.2.jarsz $HIVE_HOME/jdbc/hive-jdbc-3.1.2-standalone.jar

用户名密码不设置也可以连接

2. 配置core-site.xml 重启hadoop,hive

将“xxx”替换成自己的用户名。

<property><name>hadoop.proxyuser.xxx.hosts</name><value>*</value></property><property><name>hadoop.proxyuser.xxx.groups</name><value>*</value></property>

重启hadoop,先stop-all.sh,再start-all.sh

Hive 报错问题

1. SLF4J: Class path contains multiple SLF4J bindings.

与hadoop中的log4j重复,log4j-slf4j-impl-2.10.0.jar重复

cd $HIVE_HOME/librm log4j-slf4j-impl-2.10.0.jar

2. Exception in thread “main” java.lang.NoSuchMethodError: mon.base.Preconditions.checkArgument(ZLjava/lang/String;Ljava/lang/Object;)V

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7fHvhcZ8-1637110689766)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-1116140121888.png)]

原因:

hadoop和hive的两个guava.jar版本不一致

两个位置分别位于下面两个目录:

/usr/local/hive/lib//usr/local/hadoop/share/hadoop/common/lib/

解决办法:

删除低版本的那个,将高版本的复制到低版本目录下

cd $HADOOP_HOME/share/hadoop/common/libfind guava*##显示guava-27.0-jre.jarcd $HIVE_HOME/libfind guava*##显示guava-19.0.jar, 所以删hive路径下的,复制hadoop路径下的,hadoop路径下的软连接也可以rm guava-19.0.jarcp $HADOOP_HOME/share/hadoop/common/lib/guava-27.0-jre.jar $HIVE_HOME/lib/

3. Exception in thread “main” [com.ctc.wstx.exc.WstxLazyException] com.ctc.wstx.exc.WstxUnexpectedCharException: Unexpected character ‘<’ (code 60) (expected a name start character)

hive-site.xml 文件中有非法字符,后面提示我是20行

看了一下是我mysql 密码中有&# 字符,重新设置了mysql密码

alter user '用户名'@'%' identified by 'newpassword';flush privileges;

4. 错误:FAILED: HiveException java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient

hive (default)> create database hive1;

FAILED: HiveException java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient

解决办法:
(1) 初始化数据库

[hadoop@hadoop001 ~]$ schematool -dbType mysql -initSchema

(2) hive-site 配置文件有问题

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。