Hive+mysql安装

作者 zhan-bin 日期 2018-07-22
Hive+mysql安装

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

CentOS系统镜像下载地址-点击进入

JDK下载地址-点击进入

Hadoop下载地址-点击进入

(这里使用的是hadoop2.9.1 尽量下载stable文件夹里面的稳定版本。下载”stable”下的hadoop-2.x.y.tar.gz这个格式的文件)

安装mysql

1.使用xshell上传安装包至虚拟机

  • 在xshell里面使用rz命令上传文件

2.安装依赖库

  • 官方说要安装libaio,但实际如果你安装libaio库的话不行,还需安装numactl库,如下
    1
    2
    yum install numactl
    yum install libaio-dev

3.解压软件包

  • 这里我直接在准备安装的目录下解压
    1
    2
    tar -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
2
3
cd mysql
mkdir mysql-files
chmod 750 mysql-files

5.复制服务文件

1
cp support-files/mysql.server /etc/init.d/mysql.server

6.初始化数据库(root用户)

  • 初始化命令:

    1
    bin/mysqld --initialize --user=mysql
  • 可以看到系统随机给root用户分配了一个密码,如图所示,这个密码要记住,想要自定义过后可以再改
    4

7.开启服务并使用root登陆(root用户)

  • &是后台运行的意思,执行命令之后,终端会卡在一个位置,再按一下Enter即可

    1
    bin/mysqld_safe --user=mysql &
  • 使用刚才随机生成的密码,即可进入数据库

    1
    bin/mysql -uroot -p

8.创建登陆用户

  • 刚刚用root登陆之后在mysql命令行下(为了hive创建元数据进行提前设置)创建用户hadoop,设置用户密码:hadoop,赋予用户权限,执行刷新,执行命令如下:

    1
    2
    3
    mysql>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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[mysqld]
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd

[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid

#
# include all files from the config directory
#
!includedir /etc/my.cnf.d
skip-grant-tables

10.配置环境变量

1
vi /etc/profile
  • 增加mysql的安装目录
    1
    2
    :$MYSQL_HOME/bin
    MYSQL_HOME=/usr/local/mysql

10

11.重新启动mysql

1
2
/etc/init.d/mysqld stop
/etc/init.d/mysqld start

安装Hive

1.上传压缩包到虚拟机上

  • 这里使用的是xshell上传文件,使用rz命令将windows下下载的hive压缩包上传到虚拟机里面
    1
  • 解压hive压缩包到自定义安装目录中(我这里是直接安装在上传的目录上)
    1
    tar xvzf apache-hive-2.3.3-bin.tar.gz

2.添加文件链接(第二个文件名)

1
2
ln -sf ./apache-hive-2.3.3-bin ./hive #添加文件链接
ll #查看是否添加成功

2

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&amp;useSSL=false&amp;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

11

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
    2
    ll
    cd mysql-connector-java-8.0.11

3

  • 进入文件夹后看到有mysql-connector-java-8.0.11.jar的文件,将其复制到hive安装目录下的lib文件夹中。
    1
    2
    ll
    cp ./mysql-connector-java-8.0.11.jar /home/hadoop/hive/lib

3

  • 查看是否插件是否已经复制到lib中
    1
    ll /home/hadoop/hive/lib

3

7.hive元数据库初始化

  • 执行如下代码初始化hive元数据库

    1
    schematool -dbType mysql -initSchema
  • 初始化成功时如下图所示(后面显示了“schemaTool completed”才算是初始化完成了):
    3
    执行的时候可能会出现如下错误:

    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
    3
    cd ..
    cd bin/
    ls

3

  • 在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运行报错

    5

  • 到这里Hive就算安装成功了