Hive 1.2.1SparkSqoop安装指南

目录

目录 1

1. 前言 1

2. 约定 2

3. 服务端口 2

4. 安装MySQL 2

4.1. 安装MySQL 2

4.2. 创建Hive元数据库 4

5. 安装步骤 5

5.1. 下载Hive 1.2.1二进制安装包 5

5.2. 安装Hive 5

5.3. 安装MySQL-Connector 5

5.4. 修改配置 5

5.4.1. 修改/etc/profile~/.profile 5

5.4.2. 修改其它配置文件 5

5.4.2.1. 修改hive-env.sh 6

5.4.2.2. 修改hive-site.xml 6

5.4.2.3. 修改hive-log4j.properties 7

5.4.2.4. 修改hive-exec-log4j.properties 7

6. 启动运行 7

7. 远程执行HSQL 8

8. 基本命令 8

9. 单点方案 9

10. 和Spark集成 9

11. 和Sqoop集成 9

11.1. 修改sqoop-env.sh 9

11.2. 修改sqoop-site.xml 10

11.3. 复制hadoopjar文件 10

11.4. 验证测试 10

12. 常见错误 11

13. 相关文档 14

 

1. 前言

本文的安装参照《Hive 0.12.0安装指南》,内容来源于官方的:GettingStarted,将Hive 1.2.1安装在Hadoop 2.7.1上。本文将Hive配置成Server模式,并且使用MySQL作为元数据数据库,远程连接MySQL

关于Hadoop 2.7.1的安装,请参见《Hadoop-2.7.1分布式安装手册》一文。

2. 约定

本文约定Hadoop被安装在/data/hadoop/current,将Hive 1.2.1的安装到目录/data/hadoop/hive(实际是指向/data/hadoop/hive-1.2.1-bin的软链接)。将MySQL 5.7.10安装到目录/data/mysql。在实际安装部署时,可以指定为其它目录。

3. 服务端口

10000

hive.server2.thrift.port,执行hiveserver2时会启动它

9083

hive.metastore.uris,执行hive --service metastore时会启动它

4. 安装MySQL

由于单台MySQL有单点问题,因此实际中需要配置成主备MySQL方式。

4.1. 安装MySQL

本文MySQL被安装在172.25.39.166机器上HiveMySQL来存储元数据,因此需要先安装好MySQL。这里安装的是最新的MySQL 5.7.10,下载网址为:http://dev.mysql.com/downloads/mysql/,本文选择是的“Linux - Generic”下的“Linux - Generic (glibc 2.5) (x86, 64-bit), Compressed TAR Archive”,它的二进制安装包名为mysql-5.7.10-linux-glibc2.5-x86_64.tar.gz

将二进制安装包解压后,可看到名为INSTALL-BINARY的文件,该文件有说明如何安装MySQL,本文基本参照它进行的。

由于官方提供的二进制安装包,编译的时候指定的“--prefix”为“/usr/local/mysql”,所以最好将mysql安装在/usr/local目录下,否则安装过程会容易遇到问题。但建立将数据目录指定为一个足够大的分区下的目录。

当然data目录也可以为软链接方式到足够大的分区目录,并且推荐使用软链接方式,否则在使用mysql命令时,经常需要指定参数“--datadir”,比如mysqldmysqld_safemysql_ssl_rsa_setup等都需要指定“--datadir”。

如果不是安装在/usr/local/mysql,则需要为mysqld指定--basedir--character-sets-dir--language--lc-messages-dir--plugin-dir等众多参数值。

如果不能root用户安装,则还需要为mysqld指定--slow-query-log-file--socket--pid-file--plugin-dir--general-log-file等参数值。

这些参数的默认值,都可以通过执行MySQL的“bin/mysqld --verbose --help”查看到。

# MySQL安装目录为/usr/local/mysql,数据目录实际为/data/mysql/data

# 注意需以root用户安装MySQL,如果不能root用户安装,容易遇到安装麻烦

# 并请注意5.7.6之前的版本安装略有不同!

 

# 新建mysql用户组

groupadd mysql

# 新建mysql用户,并设置为不能作为linux登录用户

useradd -r -g mysql -s /bin/false mysql

 

# 进入到mysql安装目录

cd /usr/local

# 解压二进制安装包

tar xzf mysql-5.7.10-linux-glibc2.5-x86_64.tar.gz

# 建立易记的、与版本无关的短链接

ln -s mysql-5.7.10-linux-glibc2.5-x86_64 mysql

 

# 进入到mysql目录

cd mysql

 

# 创建数据目录

mkdir -p /data/mysql/data

# 建立数据目录软链接,让指向/usr/local/mysql/data指向/data/mysql/data

ln -s /data/mysql/data /usr/local/mysql/data

 

# 设置目录权限

chmod 770 /data/mysql/data

chown -R mysql /data/mysql/data

chgrp -R mysql /data/mysql/data

chown -R mysql .

chgrp -R mysql .

 

# 初始化(成功执行完mysqld后,会提供一个临时的root密码,请务必记住)

# 另外需要注意临时密码会过期,所以需要尽量修改root密码

# 进入MySQL Cli后,执行下列命令即可修改成新密码:

# SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_password');

bin/mysqld --initialize --user=mysql --explicit_defaults_for_timestamp

# 安装和配置SSL

bin/mysql_ssl_rsa_setup

 

# 重置目录权限

chown -R root .

chown -R mysql /data/mysql/data

 

# 启动mysql

bin/mysqld_safe --user=mysql &

 

# 查看端口是否已起来(不修改配置和不指定参数--port,默认端口号为3306)

netstat -lpnt|grep 3306

 

# 停止MySQL

support-files/mysql.server stop

 

# 设置mysql随着系统自启动

cp support-files/mysql.server /etc/init.d/mysql.server

 

以上使用的都是MySQL默认配置,如果需要定制化,可以通过修改文件my.cnf来达成。MySQL 5.7.10不带my.cnf,只有个support-files/my-default.cnf

通过执行命令“support-files/my-default.cnf”,可以了解到MySQL搜索my.cnf的顺序依次为:/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf,这样可以复制一份my-default.cnf,然后再修改,如:cp support-files/my-default.cnf /etc/my.cnf

4.2. 创建Hive元数据库

创建数据库hive

create database if not exists hive;

 

创建数据库用户hive

create user hive identified by 'hive2016';

 

授权可以访问数据库hiveIP和用户,其中localhost的实际IP172.25.39.166

grant all on hive.* to 'hive'@'localhost' identified by 'hive2016';

grant all on hive.* to 'hive'@'172.25.39.166' identified by 'hive2016';

grant all on hive.* to 'hive'@'172.25.40.171' identified by 'hive2016';

 

进入hive数据库:

1) 本机进入:mysql -uhive -phive2016

2) 非本机进入:mysql -uhive -h172.25.39.166 -phive2016

 

注意如果配置了MySQL主主同步或其它同步,则如果同步的库不包含mysql,则创建库和用户需要分别在不同的MySQL上操作一次。

5. 安装步骤

5.1. 下载Hive 1.2.1二进制安装包

下载网址:http://hive.apache.org/downloads.html,下载后的包名为:apache-hive-1.2.1-bin.tar.gz,然后将apache-hive-1.2.1-bin.tar.gz上传到/data目录下。

5.2. 安装Hive

1) 切换到/data目录:cd /data

2) 解压二进制安装包:tar xzf apache-hive-1.2.1-bin.tar.gz

3) 改个名:mv apache-hive-1.2.1-bin hive-1.2.1

4) 建立软链接:ln -s hive-1.2.1 hive

5.3. 安装MySQL-Connector

MySQL-Connector下载网址:http://dev.mysql.com/downloads/connector/

选择“Connector/J”,接着选择“Platform Independent”,本文下载的是“mysql-connector-java-5.1.38.tar.gz”。

压缩包“mysql-connector-java-5.1.38.tar.gz”中有个mysql-connector-java-5.1.38-bin.jar,解压后将mysql-connector-java-5.1.38-bin.jar上传到Hivelib目录下,这个是MySQLJDBC驱动程序。

5.4. 修改配置

5.4.1. 修改/etc/profile~/.profile

设置环境变量HIVE_HOME,并将Hive加入到PATH中:

export HIVE_HOME=/data/hadoop/hive

export PATH=$HIVE_HOME/bin:$PATH

5.4.2. 修改其它配置文件

进入/data/hadoop/hive/conf目录,可以看到如下:

hadoop@VM-40-171-sles10-64:~/hive/conf> ls

hive-default.xml.template  hive-exec-log4j.properties.template

hive-env.sh.template       hive-log4j.properties.template

 

可以看到4个模板文件,复制并重命名成配置文件:

cp hive-env.sh.template hive-env.sh

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

cp hive-log4j.properties.template hive-log4j.properties

cp hive-exec-log4j.properties.template hive-exec-log4j.properties

5.4.2.1. 修改hive-env.sh

如果之前没有设置好HADOOP_HOME环境变量,则可在hive-env.sh中,进行设置:

HADOOP_HOME=/data/hadoop/current

5.4.2.2. 修改hive-site.xml

1) 修改javax.jdo.option.ConnectionURL

将值设置为:

jdbc:mysql://172.25.39.166:3306/hive?useSSL=false,

注意加上“useSSL=false”,另外还有诸于参数characterEncoding=UTF-8等。

2) 修改javax.jdo.option.ConnectionDriverName

将值设置为:com.mysql.jdbc.Driver。

3) 修改javax.jdo.option.ConnectionUserName

将值设置为访问hive数据库的用户名hive<value>hive</value>

4) 修改javax.jdo.option.ConnectionPassword

将值设置为访问hive数据库的密码:<value>hive2016</value>

5) 修改hive.metastore.schema.verification

该值试情况进行修改。

6) 修改hive.zookeeper.quorum

将值设置为:10.12.154.77,10.12.154.78,10.12.154.79,ZooKeeper被安装在这三台机器上。建议使用机器名,而不是IP,因为机器退役可能导致IP变换。

7) 修改hive.metastore.uris

将值设置为:thrift://172.25.40.171:90839083Hive元数据的RPC服务端口。

8) 修改hive.metastore.warehouse.dir

将值设置为:/data/hadoop/hive/warehouse,注意启动前,需要创建好该目录(mkdir /data/hadoop/hive/warehouse)。

9) 修改hive.server2.thrift.bind.host

该值默认为localhost,如果需要在其它机器远程访问Hive,则需要将它改成IP地址,本文将它改成172.25.40.171,可以考虑为0.0.0.0

10) 修改hive.exec.scratchdir

这一步可选,可直接使用默认值/tmp/hive。设置为:/data/hadoop/hive/tmp或其它,并创建好目录。

11) 修改hive.exec.local.scratchdir

设置为:/data/hadoop/hive/tmp/scratch或其它,并创建好目录。

12) 修改hive.downloaded.resources.dir

设置为:/data/hadoop/hive/tmp/resources或其它,并创建好目录。

13) 修改hive.querylog.location

设置为:/data/hadoop/hive/tmp/querylog或其它,并创建好目录。

14) 修改hive.server2.logging.operation.log.location

设置为:/data/hadoop/hive/tmp/operation或其它,并创建好目录。

5.4.2.3. 修改hive-log4j.properties

修改日志文件存放目录,将日志目录由/tmp/${user.name}改为/data/hadoop/hive/logs

hive.log.dir=/data/hadoop/hive/logs

 

然后创建好目录/data/hadoop/hive/logs

5.4.2.4. 修改hive-exec-log4j.properties

修改日志文件存放目录,将日志目录由默认的/tmp/${user.name}改为/data/hadoop/hive/logs/exec

hive.log.dir=/data/hadoop/hive/logs/exec

 

然后创建好目录/data/hadoop/hive/logs/exec

6. 启动运行

1) 初始化metastore

安装配置好后,在启动Hive服务端之前,需要在服务端执行一次“schematool -dbType mysql -initSchema”,以完成对metastore的初始化。

如果配置了MySQL主主同步,则只需要一台hive机器上执行,重复执行会报错。

2) 启动metastore

执行命令:hive --service metastore &

3) 启动Hive服务

执行:hiveserver2 &

4) 进入Hive命令行操作界面(类似于mysql

执行:hive

 

除了使用hive命令行操作界面之外,hiveserver2还提供了beeline(hive是用户名,hive2016是密码,可以从HiveServer2+Clients获得更多信息):

hadoop@VM-40-171-sles10-64:~/hive/bin> ./beeline 

Beeline version 1.2.1 by Apache Hive

beeline> !connect jdbc:hive2://172.25.40.171:10000 hive hive2016 org.apache.hive.jdbc.HiveDriver

Connecting to jdbc:hive2://172.25.40.171:10000

SLF4J: Class path contains multiple SLF4J bindings.

SLF4J: Found binding in [jar:file:/data/hadoop/hadoop-2.7.1/share/hadoop/common/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]

SLF4J: Found binding in [jar:file:/data/hadoop/hive-1.2.1-bin/lib/slf4j-log4j12-1.6.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]

SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.

SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]

Connected to: Hive (version 1.2.1)

Driver: Hive (version 1.2.1)

Transaction isolation: TRANSACTION_REPEATABLE_READ

0: jdbc:hive2://172.25.40.171:10000> select * from invites limit 2;

+------+----------+-------+

| foo  |   bar    |  ds   |

+------+----------+-------+

| 474  | val_475  | 2014  |

| 281  | val_282  | 2014  |

+------+----------+-------+

2 rows selected (1.779 seconds)

0: jdbc:hive2://172.25.40.171:10000> 

7. 远程执行HSQL

hive/binhive/libhive/confhive/examples打包,如:tar czf hive-bin.tar.gz hive/bin hive/lib hive/conf hive/examples

然后将hive-bin.tar.gz上传到其它机器,借助beeline即可远程执行HSQL(用hive可能会遇到问题,本文在操作时,使用hive,在执行HSQL时总会卡住,日志也没有记录特别原因,暂未去定位)。

8. 基本命令

以下内容来自官网(GettingStarted),注意命令不区分大小写:

CREATE TABLE pokes (foo INT, bar STRING);

CREATE TABLE invites (foo INT, bar STRING) PARTITIONED BY (ds STRING);

SHOW TABLES;

SHOW TABLES '.*s';

DESCRIBE invites;

DROP TABLE pokes;

 

Hive的安装目录下有个examples子目录,存储了示例用到的数据文件等。测试往表invites中加载数据,将文件../examples/files/kv2.txt加载到表invites中:

LOAD DATA LOCAL INPATH '../examples/files/kv2.txt' OVERWRITE INTO TABLE invites PARTITION (ds='2014');

 

可以通过“select * from invites;”来检验加载情况,或者执行“select count(1) from invites;”。

9. 单点方案

可通过部署两个hive来解决单点,元数据库采用MySQLMySQLhive部署在相同机器上,两个MySQL配置成主主同步。

hive为一主一热备的方式,最好保证同一时刻只有一个hive提供服务,虽然很多情况下,两个hive都提供服务也能正常工作。

10. 和Spark集成

Spark集成Hive非常简单,只需以下几步:

1) 在spark-env.sh中加入HIVE_HOME,如:export HIVE_HOME=/data/hadoop/hive

2) 将Hivehive-site.xmlhive-log4j.properties两个文件复制到Sparkconf目录下。

 

完成后,再次执行spark-sql进入SparkSQL Cli,运行命令show tables即可看到在Hive中创建的表。

示例:

./spark-sql --master yarn --driver-class-path /data/hadoop/hive/lib/mysql-connector-java-5.1.38-bin.jar

11. 和Sqoop集成

sqoop-1.4.6.bin__hadoop-2.0.4-alpha为例,支持增量导入,不但可以将数据导入到Hive中,还可以往HBase导数据,也可以将数据从DB导入到HDFS存储。总之,Sqoop功能十分强大,但这里仅简单介绍。

Sqoop的官网(下载网址:http://www.apache.org/dyn/closer.lua/sqoop/1.4.6)下载sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz

解压,然后进入Sqoopconf目录,完成以下修改即可:

11.1. 修改sqoop-env.sh

复制一份sqoop-env-template.sh,命名为sqoop-env.sh。在sqoop-env.sh中设置以下环境变量:

1) HADOOP_COMMON_HOME

值为Hadoop的安装目录,示例:export HADOOP_COMMON_HOME=/data/hadoop

2) HADOOP_MAPRED_HOME

值为hadoop-common-*.tar文件所在目录,位于Hadoop安装目录之下。

示例:export HADOOP_MAPRED_HOME=/data/hadoop/share/hadoop/common

3) HBASE_HOME

值为HBase的安装目录,示例:export HBASE_HOME=/data/hbase

4) HIVE_HOME

值为Hive的安装目录,示例:export HIVE_HOME=/data/hive

5) ZOOCFGDIR

值为Zookeeper的配置目录,示例:export ZOOCFGDIR=/data/zookeeper/conf

11.2. 修改sqoop-site.xml

复制一份sqoop-site-template.xml,命名为sqoop-site.xml,可不做任何修改。

11.3. 复制hadoopjar文件

这一步可先不操作,但如果遇到“Please check your configuration for mapreduce.framework.name and the correspond server addresses”错误,则需要将hadoop-mapreduce-client-common-2.7.1.jarhadoop-mapreduce-client-core-2.7.1.jarhadoop-mapreduce-client-jobclient-2.7.1.jarhadoop-mapreduce-client-shuffle-2.7.1.jar复制到sqooplib目录。

11.4. 验证测试

1) 列出MySQL数据库

./sqoop list-databases --connect jdbc:mysql://127.0.0.1:3306/ --username zhangsan --password zhangsan2016

 

2) 根据MySQL表创建Hive

./sqoop create-hive-table --connect jdbc:mysql://127.0.0.1:3306/test --username zhangsan --password zhangsan2016 --table t_test --hive-table t_test_2016

 

如果Hive表需要分区,可以通过参数--hive-partition-key--hive-partition-value 来指定。

 

如果需覆盖已存在的Hive表,加上参数“--hive-overwrite”即可。“--hive-partition-key”值为分区名,默认为string型,“–hive-partition-value”为分区的值。

 

3) 将数据从MySQL导入到Hive

./sqoop import --connect jdbc:mysql://127.0.0.1:3306/test --username zhangsan --password 'zhangsan2016' --table t_test --hive-import -m 6 --hive-table t_test_2016 --direct

 

注意为运行sqoop的机器授权访问MySQL,可能也需要为运行MapReduce的机器授权。

建议带上参数“--direct”,表示使用快速模式,比如它会利用MySQL的工具mysqldump导出数据。

-m”表示启用多少个map并行导入数据,默认是4个,最好不要将数字设置为高于集群的最大Map数。

“–table”用来指定要导入的DB表名,“--hive-import”表示从DB导入数据到Hive。还可以借助参数“--query”使用SQL有条件的从DB中导出。

 

如果需要指定字符集,使用参数“--default-character-set”,如:--default-character-set UTF-8

4) 增量从MySQLHive导数据

./sqoop import --connect jdbc:mysql://127.0.0.1:3306/test --username zhangsan --password 'zhangsan2016'  --table t_test --hive-import --hive-table t_test_2016 --split-by f_id --incremental lastmodified --check-column f_donate_time --last-value '2016-03-01 00:00:00'

建议增量时,不要带参数“-m”,因为如指定了“-m”,对应的导入会在hdfs上差生相应的中间结果,当下一次再次执行job时,则会报“output directory is exist”错误。

12. 常见错误

1) Please check your configuration for mapreduce.framework.name and the correspond server addresses

在运行sqoopMySQLHive导数据时,如果报这个错误,一是要检查mapred-site.xml中的“mapreduce.framework.name”是否为yarn。其次可以尝试将hadoopshare/hadoop/mapreduce目录下的四个文件:hadoop-mapreduce-client-common-2.7.1.jarhadoop-mapreduce-client-core-2.7.1.jarhadoop-mapreduce-client-jobclient-2.7.1.jarhadoop-mapreduce-client-shuffle-2.7.1.jar复制到sqooplib目录下。

2) TIMESTAMP with implicit DEFAULT value is deprecated

执行MySQL的“bin/mysqld --initialize --user=mysql”时报的错误。

原因是从MySQL 5.6版本开始,timestamp的默认值已被标为deprecated,即如果类型为timestamp的字段,如果没有明确声明默认值为NULL,则默认为NOT NULL。如果设置timestamp字段为NULL,则自动存储当前的timestamp

3) Can't find error-message file '/usr/local/mysql/share/errmsg.sys'

执行MySQL的“bin/mysqld --initialize --user=mysql --explicit_defaults_for_timestamp”时报的错误。

这可能是因为之前有执行过,导致data目录不为空,通过“bin/mysqld --verbose --help|grep datadir”可以查看到默认的数据目录为/var/lib/mysql/。需要保证/var/lib/mysql/目录为空。或者通过指定参数--datadir改变数据目录,如“bin/mysqld --initialize --user=mysql --explicit_defaults_for_timestamp --datadir=/data/mysql/data”。

4) Can't find error-message file '/usr/local/mysql/share/errmsg.sys'

对于错误:

Can't find error-message file '/usr/local/mysql/share/errmsg.sys'. Check error-message file location and 'lc-messages-dir' configuration directive.

从官网下载的MySQL默认安装目录为/usr/local/mysql,如果实际为其它目录,则建议通过参数--basedir指定,否则会遇到不少安装问题。通过执行“bin/mysqld --verbose --help|grep basedir”即可看到“--basedir”的默认值为/usr/local/mysql/

5) Failed to connect to the MetaStore Server

如果运行hiveserver2,遇到下列错误后,推荐打开DEBUG日志级别,以更查看更详细的信息,将日志配置文件hive-log4j.properties中的“hive.root.logger=WARN,DRFA”改成“hive.root.logger=DEBUG,WARN,DRFA”即可。

2014-04-23 06:00:04,169 WARN  hive.metastore (HiveMetaStoreClient.java:open(291)) - Failed to connect to the MetaStore Server...

2014-04-23 06:00:05,173 WARN  hive.metastore (HiveMetaStoreClient.java:open(291)) - Failed to connect to the MetaStore Server...

2014-04-23 06:00:06,177 WARN  hive.metastore (HiveMetaStoreClient.java:open(291)) - Failed to connect to the MetaStore Server...

2014-04-23 06:00:07,181 WARN  hive.metastore (HiveMetaStoreClient.java:open(291)) - Failed to connect to the MetaStore Server...

2014-04-23 06:00:08,185 WARN  hive.metastore (HiveMetaStoreClient.java:open(291)) - Failed to connect to the MetaStore Server...

2014-04-23 06:00:09,194 ERROR service.CompositeService (CompositeService.java:start(74)) - Error starting services HiveServer2

org.apache.hive.service.ServiceException: Unable to connect to MetaStore!

        at org.apache.hive.service.cli.CLIService.start(CLIService.java:85)

        at org.apache.hive.service.CompositeService.start(CompositeService.java:70)

        at org.apache.hive.service.server.HiveServer2.start(HiveServer2.java:73)

        at org.apache.hive.service.server.HiveServer2.main(HiveServer2.java:103)

        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:483)

        at org.apache.hadoop.util.RunJar.main(RunJar.java:212)

 

修改后,再次运行hiveserver2,日志变详细了,猜测是metastore没有起来,可以通过执行“hive --service metastore”来启动metastore

2014-04-23 06:04:27,053 INFO  hive.metastore (HiveMetaStoreClient.java:open(244)) - Trying to connect to metastore with URI thrift://172.25.40.171:9083

2014-04-23 06:04:27,085 WARN  hive.metastore (HiveMetaStoreClient.java:open(288)) - Failed to connect to the MetaStore Server...

org.apache.thrift.transport.TTransportException: java.net.ConnectException: 拒绝连接

        at org.apache.thrift.transport.TSocket.open(TSocket.java:185)

        at org.apache.hadoop.hive.metastore.HiveMetaStoreClient.open(HiveMetaStoreClient.java:283)

        at org.apache.hadoop.hive.metastore.HiveMetaStoreClient.<init>(HiveMetaStoreClient.java:164)

        at org.apache.hadoop.hive.metastore.HiveMetaStoreClient.<init>(HiveMetaStoreClient.java:104)

        at org.apache.hive.service.cli.CLIService.start(CLIService.java:82)

        at org.apache.hive.service.CompositeService.start(CompositeService.java:70) 

        at org.apache.hive.service.server.HiveServer2.start(HiveServer2.java:73)

        at org.apache.hive.service.server.HiveServer2.main(HiveServer2.java:103)

        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:483)

        at org.apache.hadoop.util.RunJar.main(RunJar.java:212)

 

6) Version information not found in metastore

执行“./hive --service metastore”报下面这样的错误原因是未对metastore进行初始化,需要执行一次“schematool -dbType mysql -initSchema”。

SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]

MetaException(message:Version information not found in metastore. )

        at org.apache.hadoop.hive.metastore.ObjectStore.checkSchema(ObjectStore.java:5638)

        at org.apache.hadoop.hive.metastore.ObjectStore.verifySchema(ObjectStore.java:5622)

        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:483)

        at org.apache.hadoop.hive.metastore.RetryingRawStore.invoke(RetryingRawStore.java:124)

        at com.sun.proxy.$Proxy2.verifySchema(Unknown Source)

        at org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.getMS(HiveMetaStore.java:403)

        at org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.createDefaultDB(HiveMetaStore.java:441)

        at org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.init(HiveMetaStore.java:326)

        at org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.<init>(HiveMetaStore.java:286)

        at org.apache.hadoop.hive.metastore.RetryingHMSHandler.<init>(RetryingHMSHandler.java:54)

        at org.apache.hadoop.hive.metastore.RetryingHMSHandler.getProxy(RetryingHMSHandler.java:59)

        at org.apache.hadoop.hive.metastore.HiveMetaStore.newHMSHandler(HiveMetaStore.java:4060)

        at org.apache.hadoop.hive.metastore.HiveMetaStore.startMetaStore(HiveMetaStore.java:4263)

        at org.apache.hadoop.hive.metastore.HiveMetaStore.main(HiveMetaStore.java:4197)

        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:483)

        at org.apache.hadoop.util.RunJar.main(RunJar.java:212)

7) java.net.URISyntaxException: Relative path in absolute URI: ${system:java.io.tmpdir%7D/$%7Bsystem:user.name%7D

解决办法:将hive-site.xml中所有的system:java.io.tmpdir都换成绝对路径,hive-1.2.1共有4处。

8) Establishing SSL connection without server's identity verification is not recommended

问题现象:

Wed Feb 17 10:39:37 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”,如:

jdbc:mysql://127.0.0.1:3306/hive?characterEncoding=UTF-8;useSSL=false

9) SPARK_CLASSPATH was detected

SPARK_CLASSPATH was detected (set to '/data/hadoop/hive/lib/mysql-connector-java-5.1.38-bin.jar:').

This is deprecated in Spark 1.0+.

Please instead use:

 - ./spark-submit with --driver-class-path to augment the driver classpath

 - spark.executor.extraClassPath to augment the executor classpath

意思是不推荐在spark-env.sh中设置环境变量SPARK_CLASSPATH,可以改成如下推荐的方式:

./spark-sql --master yarn --driver-class-path /data/hadoop/hive/lib/mysql-connector-java-5.1.38-bin.jar

13. 相关文档

HBase-0.98.0分布式安装指南》

Hive 1.2.1安装指南》

ZooKeeper-3.4.6分布式安装指南》

Hadoop 2.3.0源码反向工程》

《在Linux上编译Hadoop-2.7.1

Accumulo-1.5.1安装指南》

Drill 1.0.0安装指南》

Shark 0.9.1安装指南》

 

更多,敬请关注技术博客:http://aquester.cublog.cn

转载于:https://www.cnblogs.com/aquester/p/9891544.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/459142.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Matlab与C/C++混合编程调用OpenCV

*************************************************** 更多精彩&#xff0c;欢迎进入&#xff1a;http://shop115376623.taobao.com http://item.taobao.com/item.htm?spma1z10.5-c.w4002-9510581626.24.ZO6sko&id43401674106 精通MATLAB混合编程视频讲解 MATLAB各类函数…

STL--排序与检索

题目 现有N个大理石&#xff0c;每个大理石上写了一个非负整数。首先把各数从小到大排序&#xff0c;然后回答Q个问题。每个问题是否有一个大理石写着某个整数x,如果是&#xff0c;还要回答哪个大理石写着x。排序后的大理石从左到右编写为1-N。&#xff08;样例中&#xff0c;…

体验LESS CSS 框架

LESS基于NODE.JS的一种框架性语言&#xff0c;它可以更好更快捷的来搭建网站框架结构&#xff1b; 而后LESS 将 CSS 赋予了动态语言的特性&#xff0c;如 变量&#xff0c; 继承&#xff0c;运算&#xff0c; 函数. LESS 既可以在 客户端 上运行 (支持IE 6, Webkit, Firefox)&a…

java添加按钮点击事件_如何为odoo 10中的按钮点击事件添加一个java脚本处理程序?...

我想使用java脚本为header中的按钮创建一个处理程序。下面我视图模型给出&#xff1a;如何为odoo 10中的按钮点击事件添加一个java脚本处理程序&#xff1f;inherit_id"web.assets_backend">rel"stylesheet">my_pet_store_formpetstore.messageformc…

LeetCode(53):Maximum Subarray

Maximum Subarray: Find the contiguous subarray within an array (containing at least one number) which has the largest sum.For example, given the array [−2,1,−3,4,−1,2,1,−5,4],the contiguous subarray [4,−1,2,1] has the largest sum 6. 题意&#xff1a;找…

孩子教育

看了一圈学区房&#xff0c;基本上把浦东各个一流二流学校全看一遍了&#xff0c;大体下来觉得未必非要到一流学校附近买学区房&#xff0c;主要是家庭经济条件不允许&#xff0c;再者我和老公希望孩子在小学培养读书的习惯&#xff0c;而不是天天做试卷。所以一流学校和二流学…

python 程序打包 vscode_使用VScode编写python程序并打包成.exe文件

听说Visual Studio Code(VS Code)的诸多好处&#xff0c;了解了一下果真很喜欢&#xff0c;我喜欢它的缘由主要有3个&#xff0c;一是VS Code开源且跨平台&#xff0c;二是由于其界面很是酷&#xff0c;三是能够知足个人大所属代码需求&#xff0c;除此以外固然还有强大的好奇心…

使用命名空间、头文件和实现文件

*************************************************** 更多精彩&#xff0c;欢迎进入&#xff1a;http://shop115376623.taobao.com *************************************************** 2.3 使用命名空间、头文件和实现文件 使新的throttle类满足程序的需求将是非常…

Permissions for id_rsa are too open

为什么80%的码农都做不了架构师&#xff1f;>>> Last week I was lucky enough to have my laptop upgraded (yay SSD) which meant I needed to configure a new install of OSX Lion. Most of my files are stored online (email, documents, code, etc) but I m…

java看图_看图吧,Java

package salary;import java.awt.*;import javax.swing.*;import java.awt.event.*;import java.text.NumberFormat;public class Salary extends JFrame{//声明标签private JLabel numl;private JLabel basel;private JLabel salel;//声明文本框private JTextField numf;priva…

解决端口占用

tomcat启动时报错&#xff1a; 这说明8080端口已被其他程序占用&#xff0c;先用命令提示符 "netstat -ano" 显示端口&#xff0c;再在结果中找到端口&#xff0c;然后根据其PID再输入"tasklist"命令&#xff0c;在结果中查找其对应程序&#xff0c;就可知…

Python笔记-第一天

1。Python的输出print函数要把输出的字符串用单引号或者双引号括起来&#xff0c;但是不能混用。比如print(hello,world)和print("hello,world")是相同的。2.大小写敏感。3.由于缩进使用空格&#xff0c;复制代码不再那么方便。4.我在notepad中设置了Tab自动转化为4个…

Saltstack 报错 python-crypto randomPool_DeprecationWarning:

执行saltstack 报错一下信息根据报错信息修改python文件#若遇报错1#Starting salt-master daemon: /usr/lib64/python2.6/site-packages/Crypto/Util/number.py:57: PowmInsecureWarning: Not using mpz_powm_sec. You should rebuild using libgmp > 5 to avoid timing at…

java接口源码_java collection接口源码

package java.util;/** 1.Collection接口是集合继承关系中的根接口(root interface),有些集合允许重复元素&#xff0c;* 有些集合有序&#xff0c;JDK不提供本接口的实现&#xff0c;只提供子接口的实现(例如Set,List)* 2.所有实现Collection(或者其子接口)的类都必须包含两个…

结构体的嵌套问题

*************************************************** 更多精彩&#xff0c;欢迎进入&#xff1a;http://shop115376623.taobao.com *************************************************** 结构体的自引用(self reference)&#xff0c;就是在结构体内部&#xff0c;包含指向自…

cocos2dx 3.x Value、Vector和Map意识

1. Value cocos2d::Value 这包括一个非常大的数字原生类型&#xff08;int,float,double,bool,unsigned char,char* 和 std::string&#xff09;外 加std::vector<Value>, std::unordered_map<std::string,Value> 和 std::unordered_map<int,Value> 的类。 你…

【MPI学习3】MPI并行程序设计模式:不同通信模式MPI并行程序的设计

学习了MPI四种通信模式 及其函数用法&#xff1a; &#xff08;1&#xff09;标准通信模式&#xff1a;MPI_SEND &#xff08;2&#xff09;缓存通信模式&#xff1a;MPI_BSEND &#xff08;3&#xff09;同步通信模式&#xff1a;MPI_SSEND &#xff08;4&#xff09;就绪通信…

java 日期 年数_java 日期加减天数、月数、年数的计算方式

因为某个项目需要统计 近1周、近1个月、近6个月 等数据&#xff0c;所以在时间的加减上面想了很多方式&#xff0c;最后决定用java.util.Calendarjava.util.Calendar &#xff0c;提供了计算时间的方式&#xff0c;Calendar.DATE : 代表天数Calendar.WEDNESDAY: 代表周数Calend…

学习笔记——C语言实现单链表的基本操作:创建、输出、插入结点、删除结点、逆序链表

*************************************************** 更多精彩&#xff0c;欢迎进入&#xff1a;http://shop115376623.taobao.com *************************************************** 链表是最简单的一种数据结构&#xff0c;是每个软件开发者必须掌握的&#xff0c;也是…

HTML中放置CSS的三种方式和CSS选择器

(一)在HTML中使用CSS样式的方式一般有三种&#xff1a;1 内联引用2 内部引用3 外部引用。第一种&#xff1a;内联引用&#xff08;也叫行内引用&#xff09;就是把CSS样式直接作用在HTML标签中。<p style"font-size: 10px; color: #FFFFFF;"> 使用CSS内联引用表…