本机安装hive的过程记录在这里,参考文章:https://blog.csdn.net/Alen_Liu_SZ/article/details/80752273
一、 安装前准备
1 安装Hadoop
具体安装过程参考:Hadoop 2.7.6安装_伪分布式集群
2 安装MySQL
具体安装过程参考:MySQL基于二进制文件安装
3 下载Hive以及MySQL-jdbc
HIve下载地址:http://mirror.bit.edu.cn/apache/hive/stable-2/
MySQL Connector下载地址:https://dev.mysql.com/downloads/connector/j/
二、 安装配置Hive
1 解压hive
cd /root/software
tar -zxvf apache-hive-2.3.3-bin.tar.gz -C /root/hive
更改文件权限
chown -R hadoop:hadoop apache-hive-2.3.3-bin
在虚拟机上创建目录,hive-log4j.properties文件要用到
//存放hive的日志文件
mkdir /home/hadoop/hive-2.3.3/data/logs
//存放临时文件
mkdir /home/hadoop/hive-2.3.3/data/temp
在HDFS上创建目录,hive-site.xml文件要用到
Hive配置文件里要用到HDFS的一些路径,需要手动创建如下路径:
hadoop fs -mkdir -p /hive/warehouse
hadoop fs -mkdir -p /hive/logs
hadoop fs -mkdir -p /hive/temp
更改权限,否则下面会报错:
Exception in thread "main" java.lang.RuntimeException: The root scratch dir: /hive/temp on HDFS should be writable. Current permissions are: rwxr-xr-x
hadoop fs -chmod 733 /hive/*
hive进行运算时,会将中间结果和日志写入上述路径:
2 配置hive-site.xml
生成hive-site.xml文件:cp -r hive-default.xml.template hive-site.xml,注意复制一份,不要新建一个同名文件。
//注意:hive-site.xml上的路径一部分是HDFS上的路径,一部分是本地路径:
[root@hdp-01 conf]# cat hive-site.xml
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://hdp-01:3306/hive?createDatabaseIfNotExist=true</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>123***</value>
</property>
//这是HDFS上的路径,HDFS创建的元数据目录
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
</property>
//HDFS创建的临时目录路径
<property>
<name>hive.exec.scratchdir</name>
<value>/user/hive/temp</value>
</property>
日志地址
<property>
<name>hive.querylog.location</name>
<value>/root/hive/apache-hive-1.2.2-bin/data/logs</value>
<description>Location of Hive run time structured log file</description>
</property>
<property>
<name>hive.server2.logging.operation.log.location</name>
<value>/root/hive/apache-hive-1.2.2-bin/data/logs</value>
<description>Top level directory where operation logs are stored if logging functionality is enabled</description>
</property>
//其它临时文件地址
<property>
<name>hive.exec.local.scratchdir</name>
<value>/root/hive/apache-hive-1.2.2-bin/data/temp</value>
<description>Local scratch space for Hive jobs</description>
</property>
<property>
<name>hive.downloaded.resources.dir</name>
<value>/user/hive/temp</value>
<description>Temporary local directory for added resources in the remote file system. </description>
</property>
</configuration>
3 配置hive-env.sh
末尾追加:
HADOOP_HOME=/root/apps/hadoop-2.8.5
export HIVE_CONF_DIR=/root/hive/apache-hive-1.2.2-bin/conf
4 拷贝mysql-connector-java-5.1.39.jar放入hive 的lib目录下
5 配置hive环境变量
vi /etc/profile
export HIVE_HOME=/usr/local/apache-hive-2.3.3-bin
export PATH=$PATH:$HIVE_HOME/bin
source /etc/profile
7 在/conf目录下配置log4j
// 这个路径是虚拟机上的
创建配置文件:
cp hive-exec-log4j.properties.template hive-exec-log4j.properties
cp hive-log4j.properties.template hive-log4j.properties
修改上面的两个配置文件:
把 property.hive.log.dir = ${sys:java.io.tmpdir}/${sys:user.name}
改为 property.hive.log.dir =/home/hadoop/hive-2.3.3/datas/logs
8 初始化mysql数据库
schematool --dbType mysql –initSchema
mysql> select user,password,host from user;先查看用户信息
为了支持mysql远程访问首先设置当前mysql用于允许master远程机访问,并修改root用户的密码为123456:
mysql> grant all privileges on *.* to root@'master' identified by '123456' with grant option;
mysql> flush privileges;
*.*代表全部数据库的全部表授权,也可以指定数据库授权,如test_db.*;
all privileges代表全部权限,也可以insert,update,delete,create,drop等;
允许root用户在spark(Linux系统的主机名,IP映射)进行远程登陆,并设置root用户的密码为root。
flush privileges告诉服务器重新加载授权表。
hive执行初始化命令时
MySQL的驱动包放置到$HIVE_HOME/lib目录下
执行schematool -dbType mysql -initSchema进行初始化;
Error: Duplicate key name 'PCS_STATS_IDX' (state=42000,code=1061)
以下异常说明mysql已经启动。 应先关掉先前启动的mysql.再执行初始化schema操作。
接下来就是用sql来修改root的密码
mysql> use mysql;
mysql> update user set password=password("你的新密码") where user="root";
mysql> flush privileges;
mysql> quit
9、输入:hive,启动hive