环境: Centos7 Hadoop-2.10.0 MySQL-8.0.20
安装: Hive-2.3.7
零、开始
Hive简而言之就是一个Hadoop平台上数据仓库的管理软件,这个软件将类SQL语句方便的转换成MapReduce操作HDFS(MySQL中存储元数据(如表结构),所以在master上安装就够了)。
并使用HQL(类SQL语句)作为查询接口,使用HDFS作为底层存储, 使用MapReduce作为执行层,即将HQL语句转译成M/R Job然后在Hadoop执行。
本篇上接Linux下的MySQL8.0安装。
所有操作都在Hadoop集群master机器下完成。
本文所有输出都是在作者虚拟机上的输入得到的,输出因人而异,结果没问题就好。
一、下载Hive
1、点击下载地址
2、点击Download a release now!(如下图)
3、点击https://mirrors.tuna.tsinghua.edu.cn/apache/hive/(如下图)
4、点击hive-2.3.7/(如下图)
5、点击apache-hive-2.3.7-bin.tar.gz(如下图,bin代表二进制文件,不用编译)
6、下载到Windows本地,使用telnet/ssh客户端(作者为SecureCRT)连接master机器
输入1:cd /root/coding/hive
(进入自定目录)
输入2:rz
,然后选择Windows下的压缩文件,上传到该目录下
如果提示不存在该命令,则输入
yum install -y lrzsz
安装lrzsz
上传成功可以输入ls
查看存在
7、解压到当前目录
输入:tar -zxvf apache-hive-2.3.7-bin.tar.gz
输出:略
8、配置环境变量
输入1:vi /etc/profile
输入2:在文件末尾追加下列代码(按i进入编辑模式,自行替换第一行路径):
export HIVE_HOME=/root/coding/hive/apache-hive-2.3.7-bin
export HIVE_CONF_DIR=$HIVE_HOME/conf
export PATH=$PATH:$HIVE_HOME/bin
输入3:按Esc进入命令模式后按:wq
保存退出文件
输入4(使修改生效):source /etc/profile
配置成功后可以输入
hive --version
验证,会输出hive版本信息
二、配置Hive
1、开启Hadoop集群(输入因安装位置不同而不同)
输入:/root/coding/hadoop/hadoop-2.10.0/sbin/start-all.sh
2、在集群上建立目录,并赋予权限
hdfs dfs -mkdir -p /user/hive/warehouse
hdfs dfs -chmod -R 777 /user/hive/warehouse
hdfs dfs -mkdir -p /tmp/hive
hdfs dfs -chmod -R 777 /tmp/hive
3、在Linux下建立tmp文件夹
输入1:cd /root/coding/hive/apache-hive-2.3.7-bin
输入2:mkdir tmp
和chmod -R 777 tmp/
4、修改配置文件1
输入1:cd /root/coding/hive/apache-hive-2.3.7-bin/conf
(进入文件夹)
输入2:(copy配置文件)
cp hive-default.xml.template hive-site.xml
cp hive-env.sh.template hive-env.sh
输入3:sed -i 's#\${system:user.name}#root#g; s#\${system:java.io.tmpdir}#/root/coding/hive/apache-hive-2.3.7-bin/tmp#g' /root/coding/hive/apache-hive-2.3.7-bin/conf/hive-site.xml
1.修改用户名,将文件中所有${system:user.name}替换为root
2.修改临时目录,将文件中所有${system:java.io.tmpdir}替换为/root/coding/hive/apache-hive-2.3.7-bin/tmp
输入
grep '${system:user.name}' hive-site.xml
验证,如果无输出,着替换成功
5、修改配置文件2(/root/coding/hive/apache-hive-2.3.7-bin/conf/目录下)
(大家可以直接到 第6步 对应行号找就可以了,位置不会差太多,不需要再找一遍)
输入1:grep -n 'hive.metastore.uris' hive-site.xml
(查找元数据服务)
输出1:370: <name>hive.metastore.uris</name>
(370是我们需要的行号)
输入2:grep -n ' ConnectionURL' hive-site.xml
(查找与数据库连接的URL)
输出2:544: <name>javax.jdo.option.ConnectionURL</name>
(544是我们需要的行号)
输入3:grep -n 'ConnectionDriverName' hive-site.xml
(查找jdbc驱动)
输出3:1019: <name>javax.jdo.option.ConnectionDriverName</name>
(1019是我们需要的行号)
输入4:grep -n 'ConnectionUserName' hive-site.xml
(查找登录数据库的用户)
输出4:1044: <name>javax.jdo.option.ConnectionUserName</name>
(1044是我们需要的行号)
输入5:grep -n 'ConnectionPassword' hive-site.xml
(查找对应用户的密码)
输出5:529: <name>javax.jdo.option.ConnectionPassword</name>
(529是我们需要的行号)
6、修改配置文件3(value值因配置的不同而不同,/root/coding/hive/apache-hive-2.3.7-bin/conf/目录下)
文本输入模式:在命令行模式下按i(最常用)
命令行模式:按Esc
末行模式:在命令模式下输入:加命令
输入1(显示行号编辑):vi -n hive-site.xml
输入2::370
(命令行模式,设置元数据服务)
<property>
<name>hive.metastore.uris</name> ##370
<value>thrift://master:9083</value>
</property>
输入3::544
(命令行模式,修改与数据库连接的URL,ip地址改为数据库所在ip,/后跟数据库名,如不存在则会在后面初始化hive时进行创建)
<property>
<name>javax.jdo.option.ConnectionURL</name> ##544
<value>jdbc:mysql://192.168.150.100:3306/hive?createDatabaseIfNotExist=true</value>
</property>
输入4(命令行模式,修改jdbc驱动)::1019
<property>
<name>javax.jdo.option.ConnectionDriverName</name> ##1019
<value>com.mysql.cj.jdbc.Driver</value> ##这是mysql8.0的驱动,mysql5的驱动为com.mysql.jdbc.Driver
</property>
输入5(命令行模式,修改登录数据库的用户)::1044
<property>
<name>javax.jdo.option.ConnectionUserName</name> #1044
<value>root</value> ##对应用户名称
</property>
输入6(命令行模式,修改对应用户的密码)::529
<property>
<name>javax.jdo.option.ConnectionPassword</name> #529
<value>对应用户的密码</value>
</property>
7、设置jdbc驱动点击下载网址,选择适合自己的版本下载
下载完毕后在Windows下解压,并在Linux中使用rz命令把里面的mysql-connector-java-8.0.20.jar文件上传到/root/coding/hive/apache-hive-2.3.7-bin/lib目录下
8、配置hive-env.sh
输入1:cd /root/coding/hive/apache-hive-2.3.7-bin/conf
输入2:vi hive-env.sh
输入3:(文件末尾加入)
export JAVA_HOME=/root/coding/java/jdk-11.0.6
export HADOOP_HOME=/root/coding/hadoop/hadoop-2.10.0
export HIVE_HOME=/root/coding/hive/apache-hive-2.3.7-bin
export HIVE_CONF_DIR=$HIVE_HOME/conf
export HIVE_AUX_JARS_PATH=$HIVE_HOME/lib
9、在HA(高可用)集群上还需要配置如下参数
文件路径:/root/coding/hive/apache-hive-2.3.7-bin/conf/hive-site.xml
<property>
<name>hive.metastore.warehouse.dir</name>
<value>hdfs://user/hive/warehouse</value>
</property>
<property>
<name>hive.exec.scratchdir</name>
<value>hdfs://tmp/hive</value>
</property>
<property>
<name>hive.querylog.location</name>
<value>/root/coding/hive/apache-hive-2.3.7-bin/logs</value>
</property>
三、启动Hive
1、初始化Hive(只一次)
输入1:cd /root/coding/hive/apache-hive-2.3.7-bin/bin
输入2:schematool -dbType mysql -initSchema
2、在该目录下输入hive,输入提示如下图则启动成功
退出输入exit或quit
四、常见错误
1、FAILED: SemanticException org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
解决方法1:Hive的服务端没有打开
代码:hive --service metastore &
(Linux下,输入后按ctrl+c退出,回到hive即可)
解决方法2:hive-site.xml中的数据库用户和密码配置错误,重新检查
解决方法3:用户权限不足(root账户不会出现这种情况)
代码:
格式:
grant all privileges on 'databasename.tablename' to 'user'@'host' identified by 'password';
授予user用户全局全部权限:
GRANT ALL PRIVILEGES ON *.* TO 'user'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
(全文完)