【干货】Apache Hive 2.1.1 安装配置超详细过程,配置hive、beeline、hwi、HCatalog、WebHCat等组件...

    在Docker环境成功搭建了Apache Hadoop 2.8 分布式集群,并实现了NameNode HA、ResourceManager HA之后(详见我的另一篇博文:Apache Hadoop 2.8分布式集群详细搭建过程),接下来将搭建最新稳定版的Apache Hive 2.1.1,方便日常在自己电脑上测试hive配置和作业,同样的配置也可以应用于服务器上。以下是Apache Hive 2.1.1的安装配置详细过程

1、阅读Apache Hive官网说明文档,下载最新版本Hive

       Hive是一个基于Hadoop的数据仓库工具,将HDFS中的结构化数据映射为数据表,并实现将类SQL脚本转换为MapReduce作业,从而实现用户只需像传统关系型数据库提供SQL语句,并能实现对Hadoop数据的分析和处理,门槛低,非常适合传统的基于关系型数据库的数据分析向基于Hadoop的分析进行转变。因此,Hive是Hadoop生态圈非常重要的一个工具。

       安装配置Apache Hive,最直接的方式,便是阅读 Apache Hive官网的说明文档,能了解到很多有用的信息。Apache Hive 要求JDK 1.7及以上,Hadoop 2.x(从Hive 2.0.0开始便不再支持Hadoop 1.x),Hive 可部署于Linux、Mac、Windows环境。

       从官网下载最新稳定版本的 Apache Hive 2.1.1

2、安装配置Apache Hive

(1)解压 hive 压缩包

tar -zxvf apache-hive-2.1.1-bin.tar.gz

(2)配置环境变量

vi ~/.bash_profile

# 配置hive环境
export HIVE_HOME=/home/ahadoop/apache-hive-2.1.1-bin
export HIVE_CONF_DIR=$HIVE_HOME/conf
export PATH=$PATH:$HIVE_HOME/bin

# 使配置文件生效
source ~/.bash_profile

(3)配置hive-site.xml

       官网给出了Apache Hive的配置说明,Hive的配置支持多种方式,主要如下(以map-reduce临时目录配置项 hive.exec.scratchdir 为例):

  • 第1种,环境变量
set hive.exec.scratchdir=/tmp/mydir;
  • 第2种,hive 交互命令的参数(--hiveconf)
bin/hive --hiveconf hive.exec.scratchdir=/tmp/mydir
  • 第3种,hive-site.xml配置文件
<property>
  <name>hive.exec.scratchdir</name>
  <value>/tmp/mydir</value>
  <description>Scratch space for Hive jobs</description>
</property>
  • 第4种,hivemetastore-site.xml, hiveserver2-site.xml 配置文件
<property>
  <name>hive.exec.scratchdir</name>
  <value>/tmp/mydir</value>
  <description>Scratch space for Hive jobs</description>
</property>

       当同时出现多种配置方式时,则按以下优先级生效(越往后,优先级越高):

hive-site.xml -> hivemetastore-site.xml -> hiveserver2-site.xml -> '--hiveconf' 命令行参数

       在 $HIVE_HOME/conf 里面还有一个默认的配置文件 hive-default.xml.template ,这里存储了默认的参数,通过复制该默认配置模板,并命名为hive-site.xml,用于配置新的参数

cp $HIVE_HOME/conf/hive-default.xml.template $HIVE_HOME/conf/hive-site.xml

       在配置hive-site.xml之前,要先做一些准备工作

       首先,在HDFS上新建文件夹

a、临时文件夹,默认map-reduce临时的中转路径是hdfs上的/tmp/hive-<username>,因此,如果hdfs上没有/tmp临时文件夹,则新建并授权

hadoop fs -mkdir /tmp
hadoop fs -chmod g+w /tmp

b、创建hive数据仓库目录,默认是存放在hdfs上的/user/hive/warehouse目录,新建并授权

hadoop fs -mkdir /user/hive
hadoop fs -mkdir /user/hive/warehouse
hadoop fs -chmod g+w /user/hive
hadoop fs -chmod g+w /user/hive/warehouse

         其次,安装mysql用于存储hive的元数据

         hive 默认使用Derby作为Hive metastore的存储数据库,这个数据库更多用于单元测试,只支持一个用户访问,在生产环境,建议改成功能更强大的关系型数据库,根据官网的介绍,支持用于存储hive元数据的数据库如下:

hive元数据支持的数据库 最低版本要求
MySQL 5.6.17
Postgres 9.1.13
Oracle 11g
MS SQL Server 2008 R2

      由于元数据的数据量都比较小,一般都以安装mysql来存储元数据。下面将介绍mysql的安装配置

a、到MySQL官网打开MySQL 社区版下载页面,然后下载以下的MySQL rpm安装包

b、MySQL官网有介绍MySQL rpm包的安装方法,一般需要安装 mysql-community-server, mysql-community-client, mysql-community-libs, mysql-community-common, and mysql-community-libs-compat 这些包。在MySQL服务端至少安装 mysql-community-{server,client,common,libs}-* 软件 包,在MySQL客户端至少安装 mysql-community-{client,common,libs}-* 软件包

在安装之前,先查看一下,系统之前是否有安装过mysql相关的包,如果有,则卸载掉,输入指令查询

rpm -qa|grep mysql

在本实验中,由于在docker里面的centos6安装,由于是centos6精简环境,还需要安装一些相应的依赖包,如下

yum install -y perl libaio numactl.x86_64

接下来,按顺序安装mysql 的 rpm包,由于这几个rpm包有依赖关系,因此,安装时按以下顺序逐个安装

rpm -ivh mysql-community-common-5.7.18-1.el6.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.18-1.el6.x86_64.rpm
rpm -ivh mysql-community-libs-compat-5.7.18-1.el6.x86_64.rpm
rpm -ivh mysql-community-client-5.7.18-1.el6.x86_64.rpm
rpm -ivh mysql-community-devel-5.7.18-1.el6.x86_64.rpm
rpm -ivh mysql-community-server-5.7.18-1.el6.x86_64.rpm 

c、全部安装完成后,则使用 service mysqld start 启动mysql服务,首次启动时,mysql 数据库还会进行初始化,并生成root的初始密码

[root@31d48048cb1e ahadoop]# service mysqld start
Initializing MySQL database:                               [  OK  ]
Installing validate password plugin:                       [  OK  ]
Starting mysqld:                                           [  OK  ]

d、在日志里面获取root初始密码,使用以下命令

[root@31d48048cb1e ahadoop]# grep 'temporary password' /var/log/mysqld.log
2017-06-23T04:04:40.322567Z 1 [Note] A temporary password is generated for root@localhost: g1hK=pYBo(x9

其中,最后的 g1hK=pYBo(x9 就是初始密码(随机产生的,每次安装不一样的哦)

使用初始密码,登录mysql并修改root密码为 Test.123

mysql -u root -p

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'Test.123';

【注意】MySQL 默认会开启强密码验证(MySQL's validate_password plugin is installed by default),要求密码长度至少8个字符,包含至少1个大写、1个小写、1个数字、1个特殊字符。

e、修改数据库的字符集,查看默认的字符集

mysql> SHOW VARIABLES like 'character%';

+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | latin1                     |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

可以看出,database、server的字符集为latin1,如果后面在建数据库、数据表时,没有指定utf8,输入中文会变成乱码。MySQL 官网有介绍了更改字符集的方法,修改 mysql 的配置文件

vi /etc/my.cnf

# 在 [mysqld] 下面加上这个配置
[mysqld]
character-set-server=utf8

# 如果 client 默认不是 utf8,要改成 utf8 则在 [client] 中加上这个配置
[client]
default-character-set=utf8

更改好配置文件后,保存退出,重启 mysql

service mysqld restart

再查看数据库的字符集,已变成utf8,如下

mysql> SHOW VARIABLES like '
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值