Hive+mysql安装
作者:Zhan-bin
日期:2018-07-22
环境
这里的配置为 VMware+CentOS7+hadoop2.9.1+hive2.3.3+mysql-8.0.11-linux-glibc2.12-x86_64
这里我下载的镜像是 CentOS-7-x86_64-Minimal-1804.iso
(这里使用的是hadoop2.9.1 尽量下载stable文件夹里面的稳定版本。下载”stable”下的hadoop-2.x.y.tar.gz这个格式的文件)
安装mysql
1.使用xshell上传安装包至虚拟机
- 在xshell里面使用rz命令上传文件
2.安装依赖库
- 官方说要安装libaio,但实际如果你安装libaio库的话不行,还需安装numactl库,如下
1
2yum install numactl
yum install libaio-dev
3.解压软件包
- 这里我直接在准备安装的目录下解压
1
2tar -zxvf mysql-8.0.11-linux-glibc2.12-x86_64.tar.gz
mv ./mysql-8.0.11-linux-glibc2.12-x86_64 ./mysql
4.创建文件夹并设置权限
1 | cd mysql |
5.复制服务文件
1 | cp support-files/mysql.server /etc/init.d/mysql.server |
6.初始化数据库(root用户)
初始化命令:
1
bin/mysqld --initialize --user=mysql
可以看到系统随机给root用户分配了一个密码,如图所示,这个密码要记住,想要自定义过后可以再改
7.开启服务并使用root登陆(root用户)
&是后台运行的意思,执行命令之后,终端会卡在一个位置,再按一下Enter即可
1
bin/mysqld_safe --user=mysql &
使用刚才随机生成的密码,即可进入数据库
1
bin/mysql -uroot -p
8.创建登陆用户
刚刚用root登陆之后在mysql命令行下(为了hive创建元数据进行提前设置)创建用户hadoop,设置用户密码:hadoop,赋予用户权限,执行刷新,执行命令如下:
1
2
3mysql>CREATE USER 'hadoop' IDENTIFIED BY 'hadoop';
mysql>GRANT ALL PRIVILEGES ON *.* TO 'hadoop'@'%' WITH GRANT OPTION;
mysql>flush privileges;每一条命令执行成功都有显示Query OK 。
- 命令执行成功之后,退出,使用用户hadoop进行登录。
1
bin/mysql -uhadoop -p
9.修改my.cnf文件
- /etc下的my.cnf文件修改如下:
1 | [mysqld] |
10.配置环境变量
1 | vi /etc/profile |
- 增加mysql的安装目录
1
2:$MYSQL_HOME/bin
MYSQL_HOME=/usr/local/mysql
11.重新启动mysql
1 | /etc/init.d/mysqld stop |
安装Hive
1.上传压缩包到虚拟机上
- 这里使用的是xshell上传文件,使用rz命令将windows下下载的hive压缩包上传到虚拟机里面
- 解压hive压缩包到自定义安装目录中(我这里是直接安装在上传的目录上)
1
tar xvzf apache-hive-2.3.3-bin.tar.gz
2.添加文件链接(第二个文件名)
1 | ln -sf ./apache-hive-2.3.3-bin ./hive #添加文件链接 |
3.进入到hive的conf目录下复制hive-default.xml.template添加hive-site.cml文件
1 | cp hive-default.xml.template hive-site.xml |
4.修改hive.site.xml
- 修改hive安装目录conf文件夹里面的hive.site.xml可以用/查找。
第一处:
1
2
3
4
5<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://master/hive?createDatabaseIfNotExist=true&useSSL=false&allowPublicKeyRetrieval=true</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>< value >里面的master是自己的主机名。
第二处:
1
2
3
4
5<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>第三处(登陆mysql的用户名):
1
2
3
4
5<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hadoop</value>
<description>Username to use against metastore database</description>
</property>第四处(登陆mysql的密码):
1
2
3
4
5<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>hadoop</value>
<description>password to use against metastore database</description>
</property>第五处
1
2
3
4
5
6
7
8
9
10
11<property>
<name>hive.metastore.schema.verification</name>
<value>false</value>
<description>
Enforce metastore schema version consistency.
True: Verify that version information stored in is compatible with one from Hive jars. Also disable automatic
schema migration attempt. Users are required to manually migrate schema after Hive upgrade which ensures
proper metastore schema migration. (Default)
False: Warn if the version information stored in metastore doesn't match with one from in Hive jars.
</description>
</property>
5.配置环境变量
1 | vi /etc/profile |
- 添加hive的安装目录
1
2:$HIVE_HOME/bin
export HIVE_HOME=/home/hadoop/hive
6.将mysql连接插件上传到hive
- 先到mysql官网下载mysql-connector-java-x.x.x.tar.gz,再将其上传到虚拟机中。
解压
1
tar xvzf mysql-connector-java-8.0.11.tar.gz
进入解压后的文件夹中,将放到hive安装目录下的lib目录中。
1
2ll
cd mysql-connector-java-8.0.11
- 进入文件夹后看到有mysql-connector-java-8.0.11.jar的文件,将其复制到hive安装目录下的lib文件夹中。
1
2ll
cp ./mysql-connector-java-8.0.11.jar /home/hadoop/hive/lib
- 查看是否插件是否已经复制到lib中
1
ll /home/hadoop/hive/lib
7.hive元数据库初始化
执行如下代码初始化hive元数据库
1
schematool -dbType mysql -initSchema
初始化成功时如下图所示(后面显示了“schemaTool completed”才算是初始化完成了):
执行的时候可能会出现如下错误:
org.apache.hadoop.hive.metastore.HiveMetaException: Failed to get schema version.
Underlying cause: java.sql.SQLException : The server time zone value ‘EDT’ is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.
SQL Error code: 0
Use –verbose for detailed stacktrace.
schemaTool failed
参考:初始化hive元数据库报“time zone”错误
8.启动hive
首先进入到hadoop安装目录启动hadoop集群
1
./sbin/start-all.sh
进入到hive的bin目录下直接打开hive文件即可启动hive
1
2
3cd ..
cd bin/
ls
在bin目录下执行Hive
1
hive
执行结果如下,命令行会出现 hive> :
执行过程可能会出现
Exception in thread “main” Java.lang.RuntimeException: java.lang.IllegalArgumentException:
java.net.URISyntaxException: Relative path in absolute URI: ${system:java.io.tmpdir%7D/$%7Bsystem:user.name%7D
的错误,这个是没有设置缓存目录造成的,参考:Hive运行报错- 到这里Hive就算安装成功了