(基于Hadoop2.8.5的本地模式Hive安装)
本安装依赖Haddop2.8安装
一、下载Hive与MySQL jdbc 连接驱动
apache-hive-2.3.6-bin.tar.gz 官方网站
mysql-connector-java-5.1.47.tar.gz oracle官网
二、解压安装Hive
1、使用Hadoop用户进行下面操作
2、解压缩
mkdir -p /home/hadoop/hive/
tar -vzxf apache-hive-2.3.6-bin.tar.gz -C /home/hadoop/hive/
3、配置结点环境变量
cat ~/.bash_profile
添加如下:
export HIVE_HOME=/home/hadoop/hive/apache-hive-2.3.6-bin
export PATH=$PATH:$HIVE_HOME/bin
source ~/.bash_profile
4、hadoop下创建hive所用文件夹
1)创建hive所需文件目录
hadoop fs -mkdir -p /home/hadoop/hive/tmp
hadoop fs -mkdir -p /home/hadoop/hive/data
mkdir -p /home/hadoop/hive/log
mkdir -p /home/hadoop/hive/download
hadoop fs -chmod g+w /home/hadoop/hive/tmp
hadoop fs -chmod g+w /home/hadoop/hive/data
2)检查是否创建成功
hadoop fs -ls /home/hadoop/hive/
[hadoop@centoshadoop1 ~]$ hadoop fs -ls /home/hadoop/hive/
Found 2 items
drwxrwxr-x - hadoop supergroup 0 2020-03-20 10:27 /home/hadoop/hive/data
drwxrwxr-x - hadoop supergroup 0 2020-03-20 10:27 /home/hadoop/hive/tmp
3)后面进入hive可能会爆出权限问题
hadoop fs -chmod -R 777 /home/hadoop/hive/tmp
hadoop fs -chmod -R 777 /home/hadoop/hive/data
5、将MySQL驱动copy至hive lib下面
cp mysql-connector-java-5.1.47.jar /home/hadoop/hive/apache-hive-2.3.6-bin/lib/
6、MySQL创建hive所需database、user
create database hive_db;
create user hive IDENTIFIED by 'hive'; 创建hive账号与hive密码
grant all privileges on *.* to hive@'%' identified by 'hive' WITH GRANT OPTION;
flush privileges;
退出 root 重新登录,使用hive登录检查本地登录是否正常,输入密码后,正常登录,并使用show databases命令查看数据库赋权是否正常。
mysql -u hive -p
输入密码hive
执行 use hive_db; show tables; 都没问题
执行show databases;
ERROR 1227 (42000): Access denied; you need (at least one of) the SHOW DATABASES privilege(s) for this operation
待解决:
三、修改配置文件
cd /home/hadoop/hive/apache-hive-2.3.6-bin/conf
cp hive-env.sh.template hive-env.sh
cp hive-default.xml.template hive-site.xml
cp hive-exec-log4j2.properties.template hive-exec-log4j2.properties
cp hive-log4j2.properties.template hive-log4j2.properties
1、修改hive-env.sh
添加如下:
export JAVA_HOME=/home/hadoop/java/jdk1.8.0_192
# 指定hadoop安装路径
export HADOOP_HOME=/home/hadoop/hadoop-ha/hadoop/hadoop-2.8.5
# 指定hive的配置文件路径
export HIVE_CONF_DIR=/home/hadoop/hive/apache-hive-2.3.6-bin/conf
#指定hive运行的类库目录
export HIVE_AUX_JARS_PATH=/home/hadoop/hive/apache-hive-2.3.6-bin/lib
2 ,修改hive-site.xml
最主要的就是配置数据库,存储元数据,可以配置本地或远程的数据库,内嵌的一般不用,主要修改以下数据库连接参数。还有需要配置目录的需要手动创建目录,并修改属组,在hive-site.xml文件中
"system:java.io.tmpdir/ {system:java.io.tmpdir}/system:java.io.tmpdir/{system:user.name}"值需要修改成本地路径目录。HDFS中的目录即使配置了会自动生成,也可以使用默认值
<!--Hive在HDFS中的缓存目录 -->
<property>
<name>hive.exec.scratchdir</name>
<value>/home/hadoop/hive/tmp</value>
</property>
<!-- Hive在本地的存储目录-->
<property>
<name>hive.exec.local.scratchdir</name>
<value>/home/hadoop/hive/tmp</value>
</property>
<!--从远程文件系统中添加资源的本地临时目录 -->
<property>
<name>hive.downloaded.resources.dir</name>
<value>/home/hadoop/hive/download</value>
</property>
<!-- warehouse目录,即hive在HDFS上的存储目录,可使用默认值 -->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/home/hadoop/hive/data</value>
</property>
<!-- Hive运行时的结构化日志目录-->
<property>
<name>hive.querylog.location</name>
<value>/home/hadoop/hive/log</value>
</property>
<!-- 日志功能开启时,存储操作日志的最高级目录-->
<property>
<name>hive.server2.logging.operation.log.location</name>
<value>/home/hadoop/hive/tmp</value>
</property>
<!-- 配置 MySQL 数据库连接信息 -->
<property>
<name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://ip:3306/hive_db?createDatabaseIfNotExist=true&characterEncoding=UTF-8&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>
</configuration>
3,修改日志文件hive-exec-log4j2.properties
#手动创建目录,其属组需要修改成hive的安装用户
mkdir -p /home/hadoop/hive/exec-hiveLog4j2/
property.hive.log.dir = /home/hadoop/hive/exec-hiveLog4j2/
,4,修改日志文件: hive-log4j2.properties
#手动创建目录,其属组需要修改成hive的安装用户
property.hive.log.dir = /home/hadoop/hive/hiveLog4j2/
5,初始化Hive,初始化Hive在MySQL中的元数据信息
schematool -dbType mysql -initSchema
初始化成功输出下面的日志信息:
Starting metastore schema initialization to 2.3.0
Initialization script hive-schema-2.3.0.mysql.sql
Initialization script completed schemaTool
Completed
需要注意的是,若需要程序初始化,则重新初始化之前需要删除元数据库hive_db中的所有表,否则初始化失败.
6,登录hive,进入Hive CLI命令行模式,该命令会启动Hive的CLI服务,因此也可以使用命令hive --service cli代替,同样会进入Hive的命令行模式,登录成功后如下
[hadoop@centoshadoop1 conf]$ hive
hive> show databases;
show databases
OK
default
Time taken: 22.084 seconds, Fetched: 1 row(s)