0. 安装MySQL
Centos 7上安装MySQL 5.7.37(图文详解)
1. 下载、上传、解压软件包
在Master上进行安装
下载Hive并上传到虚拟机上 http://mirror.bit.edu.cn/apache/hive/
解压
[root@master hive]# tar -zxvf apache-hive-1.2.2-bin.tar.gz
移动到规划好的文件夹下
[root@master hive]# tar -zxvf apache-hive-1.2.2-bin.tar.gz
bin :二进制命令文件 conf :配置文件 examples :示例 hcatalog :log日志 lib :文件库,运行时依赖的jar包 scripts :脚本文件
2. 修改Hive配置
(1)配置hive-env.sh
修改conf内hive-env.sh.template 文件名
[root@master conf]# mv hive-env.sh.template hive-env.sh.template
修改hive-env.sh 文件内容
[root@master conf]# vim hive-env.sh
在键盘上输入Go,其中G 会跳到文件末尾,o 会换行并进行插入编辑。 输入java、hadoop和Hive的安装路径、Hive的配置文件路径
export JAVA_HOME=/usr/local/src/jdk1.8.0_172
export HADOOP_HOME=/usr/local/src/hadoop-2.6.5
export HIVE_HOME=/usr/local/src/apache-hive-1.2.2-bin
export HIVE_CONF_DIR=/usr/local/src/apache-hive-2.3.3-bin/conf
(2)配置hive-site.xml
创建hive-site.xml
[root@master conf]# touch hive-site.xml
修改文件内容
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://master:3306/hive?createDatabaseIfNotExist=true&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>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
</property>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>hdfs://master:9000/hive/warehouse</value>
</property>
<property>
<name>hive.exec.scratchdir</name>
<value>hdfs://master:9000/hive/tmp</value>
</property>
<property>
<name>hive.querylog.location</name>
<value>/usr/hive/log</value>
<description>设置hive job日志存储位置</description>
</property>
<property>
<name>hive.cli.print.header</name>
<value>true</value>
<description>设置列名</description>
</property>
<property>
<name>hive.resultset.use.unique.column.names</name>
<value>false</value>
<description>增加列名可读性</description>
</property>
<!-- flume to hive test-->
<property>
<name>hive.support.concurrency</name>
<value>true</value>
<description>是否支持并发,默认是false</description>
</property>
<!--
<property>
<name>hive.txn.manager</name>
<value>org.apache.hadoop.hive.ql.lockmgr.DbTxnManager</value>
<description>打开一部分事务支持协同配置</description>
</property>
-->
<property>
<name>hive.compactor.initiator.on</name>
<value>true</value>
<description>运行启动程序和清除线程,用于打开所需参数的完整列表事务</description>
</property>
<property>
<name>hive.compactor.worker.threads</name>
<value>1</value>
<description>增加工作线程的数量将减少花费的时间</description>
</property>
<property>
<name>hive.enforce.bucketing</name>
<value>true</value>
<description>是否启用bucketing,写入table数据</description>
</property>
<property>
<name>hive.exec.dynamic.partition.mode</name>
<value>nonstrict</value>
<description>设置动态分区模式为非严格模式</description>
</property>
</configuration>
(3)增加环境变量
修改系统环境变量
[root@master conf]# vim ~/.bashrc
添加Hive路径
export HIVE_HOME=/usr/local/src/apache-hive-1.2.2-bin
export PATH=$PATH:${HIVE_HOME}/bin
刷新环境变量使其生效
[root@master conf]# source ~/.bashrc
3. 安装MySQL连接工具
将mysql-connector-java-5.1.44.tar 下载好后上传至虚拟机
解压
[root@master src]# tar -xvf mysql-connector-java-5.1.44.tar
将解压后的文件移动到规划好的文件夹下
[root@master src]# mv mysql-connector-java-5.1.44 /usr/local/src
将mysql-connector-java-5.1.44 里面的jar包复制到Hive的lib 目录下
[root@master mysql-connector-java-5.1.44]# cp mysql-connector-java-5.1.44-bin.jar $HIVE_HOME/lib
[root@master mysql-connector-java-5.1.44]# cd $HIVE_HOME/lib
[root@master lib]# ls
4. 启动Hive
Hive依赖Hadoop中的HDFS进行存储,依赖MySQL管理元数据。因此,我们需要等待Hadoop集群启动完成并退出安全模式后,才可以启动Hive。
(1)更改权限为root
首先,在Master上将hadoop、jdk、hive的权限所有者都改为root
[root@master src]# chown -R root:root hadoop-2.6.5/ jdk1.8.0_172/
开启slave1和slave2,将hadoop、jdk改为root
[root@slave1 src]# chown -R root:root jdk1.8.0_172
Slave2同理
(2)启动hadoop集群
然后,启动Hadoop集群
[root@master hadoop-2.6.5]# sbin/start-all.sh
启动完成后,查看hadoop集群状态
[root@master hadoop-2.6.5]# hadoop dfsadmin -report
这个位置没有出现Safe model is ON ,则已关闭安全模式,可以启动Hive。若有则说明正在开启安全模式,不能启动Hive,需要等待一会儿或者手动关闭安全模式。
命令 hadoop fs -safemode get 查看安全模式状态
命令 hadoop fs -safemode enter 进入安全模式状态
命令 hadoop fs -safemode leave 离开安全模式
Hadoop安全模式
(3)替换hadoop中的jar包
由于hadoop 2.6.5 和hive 1.2.2 中的jline包版本不一致,因此需要替换。
删除hadoop-2.6.5/share/hadoop/yarn/lib 中的jline-0.9.94.jar
[root@master apache-hive-1.2.2-bin]# rm $HADOOP_HOME/share/hadoop/yarn/lib/jline-0.9.94.jar
然后,将hive中的jline-2.12.jar 放到hadoop-2.6.5/share/hadoop/yarn/lib 使Hadoop和Hive里的jar版本保持一致。
[root@master apache-hive-1.2.2-bin]# cp lib/jline-2.12.jar $HADOOP_HOME/share/hadoop/yarn/lib/
(4)启动Hive
最后,进入到hive目录里开启hive
[root@master apache-hive-1.2.2-bin]# bin/hive
测试一下
hive> show databases;
若觉得太慢可以更改hive-site.xml 中的内容来提升速度 退出Hive
hive> exit;
编辑conf/hive-site.xml
[root@master apache-hive-1.2.2-bin]# vim conf/hive-site.xml
将一部分内容注释掉
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://master:3306/hive?createDatabaseIfNotExist=true&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>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
</property>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>hdfs://master:9000/hive/warehouse</value>
</property>
<property>
<name>hive.exec.scratchdir</name>
<value>hdfs://master:9000/hive/tmp</value>
</property>
<property>
<name>hive.querylog.location</name>
<value>/usr/hive/log</value>
<description>设置hive job日志存储位置</description>
</property>
<property>
<name>hive.cli.print.header</name>
<value>true</value>
<description>设置列名</description>
</property>
<property>
<name>hive.resultset.use.unique.column.names</name>
<value>false</value>
<description>增加列名可读性</description>
</property>
<!--
<!-- flume to hive test-->
<property>
<name>hive.support.concurrency</name>
<value>true</value>
<description>是否支持并发,默认是false</description>
</property>
<!--
<property>
<name>hive.txn.manager</name>
<value>org.apache.hadoop.hive.ql.lockmgr.DbTxnManager</value>
<description>打开一部分事务支持协同配置</description>
</property>
-->
<property>
<name>hive.compactor.initiator.on</name>
<value>true</value>
<description>运行启动程序和清除线程,用于打开所需参数的完整列表事务</description>
</property>
<property>
<name>hive.compactor.worker.threads</name>
<value>1</value>
<description>增加工作线程的数量将减少花费的时间</description>
</property>
<property>
<name>hive.enforce.bucketing</name>
<value>true</value>
<description>是否启用bucketing,写入table数据</description>
</property>
<property>
<name>hive.exec.dynamic.partition.mode</name>
<value>nonstrict</value>
<description>设置动态分区模式为非严格模式</description>
</property>
-->
</configuration>
将这部分内容注释掉,然后再启动Hive进行测试 性能提升了1s左右
|