基于Hadoop的Hive的安装与配置
hive的定义与作用
定义
Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能。
作用
1.) 直接使用hadoop所面临的问题
人员学习成本太高
项目周期要求太短
MapReduce实现复杂查询逻辑开发难度太大
2.)
操作接口采用类SQL语法,提供快速开发的能力。
避免了去写MapReduce,减少开发人员的学习成本。
hive的安装配置与调试
前面需要安装配置好hadoop和hbase,可至下方连接查询处理
hadoop的安装配置hbase的安装配置
1,准备好安装包进行解压
tar -zxf hive-1.1.0-cdh5.14.2.tar.gz -C /opt
mv hive-1.1.0-cdh5.14.2.tar.gz hive
2,配置环境变量
[root@hadoop131 software]# vi /etc/profile
添加以下内容
export HIVE_PATH=/opt/hive
export PATH=$PATH:$HIVE_PATH/bin
export HBASE_PATH=/opt/hbase //hbase如果之前配置过了就不需要再配置了
export PATH=$PATH:$HBASE_PATH/bin
使生效
[root@hadoop131 software]# source /etc/profile
3,安装mysql
1).将MySQL的两个安装包(MySQL-client-5.6.46-1.el7.x86_64.rpm/MySQL-server-5.6.46-1.el7.x86_64.rpm自行百度下载)拖入opt文件夹,ll命令可以看到MySQL的两个安装包
2).yum下载依赖包:
(1)第一个:yum install -y net-tools
(2)第二个:yum install -y perl
(3)第三个:yum install -y autoconf
3).安装客户端:
rpm -ivh MySQL-client-5.6.46-1.el7.x86_64.rpm
4).安装服务端:
(1)
rpm -ivh MySQL-server-5.6.46-1.el7.x86_64.rpm
(2)可能会提示依赖冲突,找到具体冲突的mariadb的具体文件名
(3)rpm -e 文件名 --nodeps强制删除文件
rpm -e mariadb-libs-1:5.5.64-1.el7.x86_64 --nodeps
(4)重新执行第(1)步安装服务端
5).配置my.cnf
vi /usr/my.cnf
添加[client]
default-character-set = utf8
[mysqld] (本身自带的不要再次添加,作为修改标记)
skip-grant-tables跳过权限验证
character_set_server = utf8设置编码格式
collation_server = utf8_general_ci
[client]
default-character-set = utf8
[mysqld]
skip-grant-tables //免密登录
character_set_server = utf8
lower_case_table_names //忽略大小写
collation_server = utf8_general_ci
6).重启mysql服务
输入:service mysql restart
7).进入mysql数据库
(1)输入mysql
进入mysql命令行
mysql>输入use mysql
会提示:database changed
8).修改密码
mysql>输入:update user set password=password('ok');
会提示:Rows matched: 4 Changed: 4 Warnings: 0
9).输入quit,
退出数据库
10).vi /usr/my.cnf
修改配置文件
11).找到skip-grant-tables,在前面加上#号,注释掉这一行,esc,:wq保存退出
12).输入:service mysql restart
,重启mysql数据库
13).输入:mysql -uroot -pok
进入数据库
14).在mysql命令行输入:
mysql>set password=password('ok');
15).安装完成后需要给root用户赋权;
grant all on *.* to 'root'@'hadoop110' identified by 'ok';
flush privileges;
4,hive配置修改,新建hive-site.xml
文件
[root@hadoop131 software]# cd /opt/hive/conf/
[root@hadoop131 conf]# vi hive-site.xml
加入以下内容
<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>hdfs://hadoop110:9000/hive/warehouse</value> //修改为自己的主机名
<description>管理表存储的位置,可以是linux中的目录,也可以是相对于fs.default.name有关的目录</description>
</property>
<property>
<name>hive.metastore.local</name>
<value>true</value>
</property>
<!-- 指定hive元数据存储的MySQL地址 -->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://127.0.0.1:3306/hive?createDatabaseIfNotExist=true</value>
</property>
<!-- 元数据存储数据库的驱动 -->
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<!-- 元数据存储数据库的用户名 -->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<!-- 元数据存储数据库的密码,(注:这里是mysql自己root用户的密码) -->
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>ok</value>
</property>
</configuration>
5,修改env文件名,再进行配置
[root@hadoop131 conf]# mv hive-env.sh.template hive-env.sh
[root@hadoop131 conf]# vi hive-env.sh
在最后加入以下内容
export HADOOP_HOME=/opt/hadoop
export HIVE_HOME=/opt/hive
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export HIVE_AUX_JARS_PATH=/opt/hive/lib
export JAVA_HOME=/opt/jdk8
export HIVE_CONF_DIR=/opt/hive/conf
6,修改log4j文件名,并进行配置
[root@hadoop131 conf]# mv hive-log4j.properties.template hive-log4j.properties
[root@hadoop131 conf]# vi hive-log4j.properties
第十九行修改为
hive.log.dir=/opt/hive/logs
7,新建之前site文件中的warehouse文件夹和logs文件夹
[root@hadoop131 conf]# mkdir /opt/hive/warehouse
[root@hadoop131 conf]# mkdir /opt/hive/logs
8,将mysql-connector-java-5.1.0-bin.jar包拖到hive的lib目录下
[root@hadoop131 conf]# cp /software/mysql-connector-java-5.1.0-bin.jar /opt/hive/lib
9,进行赋权
[root@hadoop131 conf]# chmod 777 /opt/hive
10,启动
初始化mysql数据库: schematool -initSchema -dbType mysql
输入hive
命令
输入: show tables;