代码改变世界

大数据02_CentOS7+Hadoop-3-1-2+MySQL5-1-73安装配置Hive-3-1-2

2020-05-05 19:39  微言晓意  阅读(418)  评论(0编辑  收藏  举报
一、安装环境
  • 操作系统:CentOS7
  • Hadoop版本:Hadoop-3.1.2.
  • MySQL版本:MySQL5.1.73
  • HIve版本:Hive-3.1.2

在Hive安装之前,要先安装好Hadoop,本次实验是在Hadoop伪分布模式下,具体安装配置过程可以参考文章:《大数据01_centos7部署hadoop-3.1.2本地模式与伪分布模式》

二、安装配置MySQL
第一步:下载MySQL安装包:
  • MySQL-client-5.1.73-1.glibc23.x86_64.rpm
  • MySQL-server-5.1.73-1.glibc23.x86_64.rpm
第二步:将上面下载的两个文件上传到服务器,我使用的是SecureFX软件。
第三步:安装MySQL-server-5.1.73-1.glibc23.x86_64.rpm

输入命令:

rpm -ivh MySQL-server-5.1.73-1.glibc23.x86_64.rpm

在安装过程中可能用遇到安装冲突,查看冲突的软件包,并把冲突的软件包卸载:

rpm -e mysql-libs-5.1.73-7.el6.x86_64 --nodeps

卸载完了原来的mysql,我们现在再来安装server,如下所示,发现安装成功了。

rpm -ivh MySQL-server-5.1.73-1.glibc23.x86_64.rpm

屏幕出现:Starting MySQL. SUCCESS!代表安装成功。

第四步:安装MySQL-client-5.1.73-1.glibc23.x86_64.rpm

输入命令:

rpm -ivh MySQL-client-5.1.73-1.glibc23.x86_64.rpm

屏幕出现100%安装进度条提示,表示安装成功。

第五步:初始化Mysql

那我们便使用/usr/bin/mysql_secure_installation这个脚本来初始化一下,输入:

 /usr/bin/mysql_secure_installation

初始化过程中会有几个问题需要输入:

第一个停顿的地方我们直接回车就可以
接下来会让我们选择是否现在设置密码,我们选择"Y"
输入密码:
再次输入密码
提示是否删除所有匿名用户,我们选择"Y"进行删除。
提示是否不允许远程连接,我们选择"n"意思是允许远程连接
提示是否删除测试数据库,我们不删除,选择n
提示是否重新刷新表权限,我们选择"Y"

到此我们的mysql初始化便完成了。

第六步:检验安装成果

mysql -uroot -p密码

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| test               |
+--------------------+
3 rows in set (0.00 sec)
mysql>

返回正常,MySQL安装成功。

三、安装配置Hive-3.1.2
1、把压缩包上传到虚拟机中,使用命令进行解压:
tar  -zxvf  apache-hive-3.1.2-bin.tar.gz  -C  /home/hadoop/test

进入解压目录,重命名文件夹:

mv  apache-hive-3.1.2-bin  hive-3.1.2
2、设置环境变量:
vi   ~/.bash_profile 

编辑文件添加内容

HIVE_HOME=/home/hadoop/test/hive-3.1.2
export HIVE_HOME
PATH=$HIVE_HOME/bin:$PATH
export PATH

使变量立即生效:

source  ~/.bash_profile 
3、修改hive-site.xml 文件:

进入/home/hadoop/test/hive-3.1.2/conf目录,下创建hive-site.xml 文件,
复制hive-default.xml.template并更名为hive-site.xml

cp hive-default.xml.template hive-site.xml  
4、创建HDFS文件夹

提前把hadoop安装配置好后启动,具体安装配置过程可以参考文章:《大数据01_centos7部署hadoop-3.1.2本地模式与伪分布模式》

hadoop fs -mkdir -p /user/hive/warehouse   # 创建文件夹
hadoop fs -mkdir -p /tmp/hive    # 创建文件夹
hadoop fs -mkdir -p /tmp/hive    # 创建文件夹
hadoop fs -chmod -R 777 /tmp/hive   # 授予权限

查看是否创建成功:

hadoop fs -ls /
5、Hive相关配置

在/home/hadoop/test/hive-3.1.2下创建iotmp目录

mkdir iotmp
chmod -R 777 iotmp   # 授予权限

pwd # 查看temp的文件位置

/home/hadoop/test/hive-3.1.2/iotmp

然后,将 hive-site.xml 中的{system:java.io.tmpdir}改为hive的本地目录,将{system:user.name}改为用户名。注意:路径和用户名都是自己的。下面列出的是根据我的路径和我的用户名修改的文件。

由于hive-site.xml文件内容很多,可以借助文本编辑器的“/关键字”查找功能来定位。

 <property>
<name>hive.exec.local.scratchdir</name>
<value>/home/hadoop/test/hive-3.1.2/hadoop</value>
<description>Local scratch space for Hive jobs</description>
 	 </property

  <property>
    		<name>hive.downloaded.resources.dir</name>
  <value>/home/hadoop/test/hive-3.1.2/${hive.session.id}_resources</value>
    		<description>Temporary local directory for added resources in the remote file system.</description>
	</property>
  
<property>
    		<name>hive.server2.logging.operation.log.location</name>
   		 <value>/home/hadoop/test/hive-3.1.2/iotmp/operation_logs</value>
    		<description>Top level directory where operation logs are stored if logging functionality is enabled</description>
 	 </property>

 	<property>
    		<name>hive.querylog.location</name>
   		<value>/home/hadoop/test/hive-3.1.2/iotmp</value>
    		<description>Location of Hive run time structured log file</description>
 	 </property>
6、数据库的相关配置

同样修改 hive-site.xml 中的以下几项,数据库jdbc地址,value标签内修改为主机ip地址

 	 <property>
   		 <name>javax.jdo.option.ConnectionURL</name>
    		<value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>
    		<description>
      		JDBC connect string for a JDBC metastore.
      		To use SSL to encrypt/authenticate the connection, provide database-specific SSL flag in the connection URL.
     		 For example, jdbc:postgresql://myhost/db?ssl=true for postgres database.
    		</description>
 	 </property>

这里jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true 中的 localhost 要看自己的数据库的 user 和 host,打开数据库,执行以下命令即可看到:

mysql> select user,host from mysql.user;

修改数据库的驱动类名称

<property>
    		<name>javax.jdo.option.ConnectionDriverName</name>
   		<value>com.mysql.jdbc.Driver</value>
    		<description>Driver class name for a JDBC metastore</description>
  	</property>

修改数据库用户名:切记要和自己的对应,用户名再前面已经查看了,我的是 root,所以这里就写root。

<property>
   		<name>javax.jdo.option.ConnectionUserName</name>
    		<value>root</value>
    		<description>Username to use against metastore database</description>
  	</property>

修改数据库密码:自己数据库的密码

<property>
    		<name>javax.jdo.option.ConnectionPassword</name>
    		<value>数据库密码</value>
    		<description>password to use against metastore database</description>
  	</property>
7、配置hive-log4j2.properties

进入/home/hadoop/test/hive-3.1.2/conf目录,创建hive-log4j2.properties文件

cp hive-log4j2.properties.template hive-log4j2.properties

用vi编辑器打开,编辑:

vi hive-log4j2.properties   # 打开文件

修改内容

property.hive.log.dir = /home/hadoop/test/hive-3.1.2/iotmp
8、配置hive-env.sh文件

进入/home/hadoop/test/hive-3.1.2/conf目录,创建 hive-env.sh文件

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

添加以下内容,没有的要添加

export JAVA_HOME=/home/hadoop/test/jdk1.8.0_241
export HADOOP_HOME=/home/hadoop/test/hadoop-3.1.2
export HIVE_HOME=/home/hadoop/test/hive-3.1.2
export HIVE_CONF_DIR=$HIVE_HOME/conf
export HIVE_AUX_JARS_PATH=/home/hadoop/test/hive-3.1.2/lib
9、下载数据库驱动:

这里我放入的是这个:mysql-connector-java-5.1.28-bin.jar ,将下好的文件解压后上传到Hive的lib文件夹下。

三、启动 Hive
1、进入hive的bin目录,进行初始化:
schematool -dbType mysql -initSchema

出现“schemaTool completed”信息代表初始化成功。如果出现错误,看错误的描述定位原因,可能出现的错误是在hive-site.xml文件的有特殊字符,删除掉for&#8即可

  <description>
     	 Ensures commands with OVERWRITE (such as INSERT OVERWRITE) acquire Exclusive locks for&#8;transactional tables.  This ensures that inserts (w/o overwrite) running concurrently
      	are not hidden by the INSERT OVERWRITE.
    </description>

然后再执行初始化命令即可。

2、启动 hive

启动hive,出现 hive>,输入show functions;

hive> show functions;

出现以下信息,说明 hive 安装成功。

OK
!
!=
$sum0
%
&
*
+
-
/
<
<=
<=>
<>
=
........