linux下安装配置hive

本机安装hive的过程记录在这里,参考文章:https://blog.csdn.net/Alen_Liu_SZ/article/details/80752273

一、 安装前准备

1 安装Hadoop

具体安装过程参考:Hadoop 2.7.6安装_伪分布式集群

2 安装MySQL

具体安装过程参考:MySQL基于二进制文件安装

3 下载Hive以及MySQL-jdbc

HIve下载地址:http://mirror.bit.edu.cn/apache/hive/stable-2/
MySQL Connector下载地址:https://dev.mysql.com/downloads/connector/j/

二、 安装配置Hive

1 解压hive

cd /root/software
tar -zxvf apache-hive-2.3.3-bin.tar.gz -C /root/hive
更改文件权限
chown -R hadoop:hadoop apache-hive-2.3.3-bin

在虚拟机上创建目录,hive-log4j.properties文件要用到
//存放hive的日志文件
mkdir /home/hadoop/hive-2.3.3/data/logs
//存放临时文件
mkdir /home/hadoop/hive-2.3.3/data/temp

在HDFS上创建目录,hive-site.xml文件要用到

Hive配置文件里要用到HDFS的一些路径,需要手动创建如下路径:
hadoop fs -mkdir -p /hive/warehouse
hadoop fs -mkdir -p /hive/logs
hadoop fs -mkdir -p /hive/temp

更改权限,否则下面会报错:
Exception in thread "main" java.lang.RuntimeException: The root scratch dir: /hive/temp on HDFS should be writable. Current permissions are: rwxr-xr-x

hadoop fs -chmod 733 /hive/*

hive进行运算时,会将中间结果和日志写入上述路径:

linux下安装配置hive_第1张图片

2 配置hive-site.xml

生成hive-site.xml文件:cp -r hive-default.xml.template  hive-site.xml,注意复制一份,不要新建一个同名文件。

//注意:hive-site.xml上的路径一部分是HDFS上的路径,一部分是本地路径,指定连接连接 URL编码为:UTF-8

[root@hdp-01 conf]# cat hive-site.xml

    
        javax.jdo.option.ConnectionURL
        jdbc:mysql://hdp-01:3306/hive?createDatabaseIfNotExist=true&useUnicode=true&characterEncoding=UTF-8
    

    
       javax.jdo.option.ConnectionDriverName
       com.mysql.jdbc.Driver
    

    
       javax.jdo.option.ConnectionUserName
        root
    

    
       javax.jdo.option.ConnectionPassword
        123***
    

    //这是HDFS上的路径,HDFS创建的元数据目录
    
        hive.metastore.warehouse.dir   
        /user/hive/warehouse
    

    //HDFS创建的临时目录路径
    
        hive.exec.scratchdir
    /user/hive/temp      
    

    日志地址
    
    hive.querylog.location
		/root/hive/apache-hive-1.2.2-bin/data/logs
    	Location of Hive run time structured log file
      

    
    hive.server2.logging.operation.log.location
		/root/hive/apache-hive-1.2.2-bin/data/logs
    Top level directory where operation logs are stored if logging  functionality is enabled
    

    //其它临时文件地址
    
    hive.exec.local.scratchdir
		/root/hive/apache-hive-1.2.2-bin/data/temp
    Local scratch space for Hive jobs
    


    
    hive.downloaded.resources.dir
		/user/hive/temp
    Temporary local directory for added resources in the remote file system.        
    


3 配置hive-env.sh

末尾追加:
HADOOP_HOME=/root/apps/hadoop-2.8.5
export HIVE_CONF_DIR=/root/hive/apache-hive-1.2.2-bin/conf

.hiverc文件应该放在这里:
Putting the global hiverc in $HIVE_HOME/bin/.hiverc is deprecated. Please use $HIVE_CONF_DIR/.hiverc instead.

4 拷贝mysql-connector-java-5.1.39.jar放入hive 的lib目录下

5 配置hive环境变量

vi /etc/profile

export HIVE_HOME=/usr/local/apache-hive-2.3.3-bin
export PATH=$PATH:$HIVE_HOME/bin

source /etc/profile

7 在/conf目录下配置log4j

// 这个路径是虚拟机上的

创建配置文件:

cp hive-exec-log4j.properties.template  hive-exec-log4j.properties
cp hive-log4j.properties.template  hive-log4j.properties

修改上面的两个配置文件:
把   property.hive.log.dir = ${sys:java.io.tmpdir}/${sys:user.name}
改为 property.hive.log.dir =/home/hadoop/hive-2.3.3/datas/logs

8 初始化mysql数据库

schematool --dbType mysql –initSchema

mysql> select user,password,host from user;先查看用户信息

为了支持mysql远程访问首先设置当前mysql用于允许master远程机访问,并修改root用户的密码为123456:
    mysql> grant all privileges on *.* to root@'master' identified by '123456' with grant option;
    mysql> flush privileges;
    *.*代表全部数据库的全部表授权,也可以指定数据库授权,如test_db.*; 
    all privileges代表全部权限,也可以insert,update,delete,create,drop等; 
    允许root用户在spark(Linux系统的主机名,IP映射)进行远程登陆,并设置root用户的密码为root。 
    flush privileges告诉服务器重新加载授权表。
hive执行初始化命令时
    MySQL的驱动包放置到$HIVE_HOME/lib目录下 
    执行schematool -dbType mysql -initSchema进行初始化;
    Error: Duplicate key name 'PCS_STATS_IDX' (state=42000,code=1061)
    以下异常说明mysql已经启动。 应先关掉先前启动的mysql.再执行初始化schema操作。


接下来就是用sql来修改root的密码
mysql> use mysql;
mysql> update user set password=password("你的新密码") where user="root";
mysql> flush privileges;
mysql> quit

9、输入:hive,启动hive
10、配置   .hiverc  文件,路径:在${HIVE_HOME}/bin目录下新建  .hiverc 文件

vi /root/hive/apache-hive-1.2.2-bin/bin

set hive.cli.print.header=true;
set hive.cli.print.current.db=true;

网上有有些资料说是在${HIVE_HOME}目录下,实际不生效。

放在bin目录下,会生效,但启动会警告:

.hiverc文件应该放在这里:
Putting the global hiverc in $HIVE_HOME/bin/.hiverc is deprecated. Please use $HIVE_CONF_DIR/.hiverc instead.

cp /root/hive/apache-hive-1.2.2-bin/bin/.hiverc /root/hive/apache-hive-1.2.2-bin/conf

三、hive导入中文乱码解决办法:

1、MariaDB中文乱码字符集处理:

(0)cd /etc/my.cnf.d
ls -l

linux下安装配置hive_第2张图片

(1)vi client.cnf

增加:default-character-set=utf8

(2)vi server.cnf

增加:[mysqld_safe] 这个要加上去

[mysqld] 
init_connect = 'SET collation_connection = utf8_general_ci'
init_connect = 'SET NAMES utf8'
character_set_server = utf8 
collation_server = utf8_general_ci

[mysqld_safe] 
init_connect = 'SET collation_connection = utf8_general_ci' 
init_connect = 'SET NAMES utf8'
character_set_server = utf8 
collation_server = utf8_general_ci
(3)重启:
systemctl restart mariadb.service

(4)查看修改:
MariaDB [(none)]>  SHOW VARIABLES LIKE 'character%';

2、修改hive对应的库:

metastore 支持数据库级别,表级别的字符集是 latin1,那么我们只需要把相应注释的地方的字符集由 latin1 改成 utf-8,就可以了。用到注释的就三个地方,表、分区、视图。如下修改分为两个步骤:

use hive;

(1)、进入数据库 Metastore 中执行以下 5 条 SQL 语句 

①修改表字段注解和表注解
alter table COLUMNS_V2 modify column COMMENT varchar(256) character set utf8
alter table TABLE_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8
② 修改分区字段注解:
alter table PARTITION_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8 ;
alter table PARTITION_KEYS modify column PKEY_COMMENT varchar(4000) character set utf8;
③修改索引注解:
alter table INDEX_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;

(2)、/conf/hive-site.xml

        javax.jdo.option.ConnectionURL
        jdbc:mysql://hdp-01:3306/hive?createDatabaseIfNotExist=true&useUnicode=true&characterEncoding=UTF-8
    

linux下安装配置hive_第3张图片

&   就是分号(;)的意思,不要单独用分号,否则会报错。

你可能感兴趣的:(大数据相关)