hive的安装和操作笔记-day1

来源:互联网 发布:淘宝找人代付安全吗 编辑:程序博客网 时间:2024/06/05 03:49

1、正常的安装hive:

两个版本的区别:

hive-1.x   底层支持的:mapreduce的老 API
hive-2.x   底层支持的:mapreduce的新API 和 spark 和 tez

    准备工作:

1、准备一个外置的MySQL,能够让安装hive的节点进行访问

检查是否安装MySQL命令:rpm -qa | grep -i mysql
一定要启动MySQL:service mysql start

2、要准备好一个启动正常的hadoop集群
3、一定要确保默认的仓库路径不存在
--> hadoop fs -rm -r /user/hive
    安装:
1、获取安装包

hive官网: http://hive.apache.org

2、解压缩到对应的安装目录

tar -zxvf apache-hive-1.2.1-bin.tar.gz -C ~/apps/

3、修改配置文件

1) 修改/home/hadoop/apps/apache-hive-1.2.1-bin/conf  --> hive-site.xml(自己创建一个)  

该配置文件配置: 配置元数据库的位置
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://hadoop02:3306/hivedb?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>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>root</value>
</property>
</configuration>

2) 把mysql的驱动包mysql-connector-java-5.1.40-bin.jar加入到/home/hadoop/apps/apache-hive-1.2.1-bin/lib/

4、配置环境变量 + 启动验证

1) 配置环境变量: 

     vim ~/.bashrc:
export HIVE_HOME=/home/hadoop/apps/apache-hive-1.2.1-bin
export PATH=$PATH:$HIVE_HOME/bin

     然后执行命令重新加载环境变量:
     source ~/.bashrc

2) 启动验证:

1、初始化元数据库
(如果是hive-2.x以下的版本,可以不用手动初始化。第一进入进入hive的时候就会自动初始化)


(apache-hive--1.2.1--bin/bin/achematool --> achematool)


初始化元数据库:schematool -dbType mysql -initSchema 

2、进入hive

都可以:
hive --service cli

hive

2、重装:

1、一定要确保默认的仓库路径不存在
2、一定要确保元数据库是空的。!!
--> hadoop fs -rm -r /user/hive
--> 删除数据库客户端的数据库文件
--> schematool -dbType mysql -initSchema
--> hive

默认的仓库路径是可以更改的(加入到上面的配置文件):

<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
<description>hive default warehouse, if nessecory, change it</description>
</property>

3、其他客户端想操作hive:

hadoop02想操作hive:

     1、scp -r apps/apache-hive-1.2.1-bin/  hadoop02:/home/hadoop/apps/

     2、配置环境变量:

       vim ~/.bashrc --> source ~/.bashrc

4、hive启动:(hive —> 就是一个jvm进程:RunJar)

     1)启动在前台:bin/hiveserver2 或者直接hive

     2)启动在前台:
bin/hiveserver2:
-> nohup hiveserver2 1>/home/hadoop/hive.log 2>&1 &
-> bin/beeline
-> !connect jdbc:hive2://hadoop05:10000
->hadoop->hadoop。

(也可一步到位:beline -u jdbc:hive2://hadoop05:10000 -n hadoop.)

前者(select * from student;时)有表头,显示信息更清晰,适合多字段多数据。但是两者都可以使用。

5、hive的基本操作:
抽象成表名: student
字段名: id, name, sex, age, department

实际操作:

// 创建库
create database myhive;

// 使用新创建的库
use myhive;

// 查看当前正在使用的库:
select current_database();

// 创建表:
create table student(id int, name string, sex string, age int, department string) row format delimited fields terminated by ",";
创建外部表:
create external table student_ext(id int);
// 查看表
show tables;

//插入单行数据

insert into tables student values(,,,,);

// 往表中加载数据:

导入本地数据:load data local inpath "/home/hadoop/student.txt" into table student;
导入HDFS数据:load data inpath '/mingxing.txt' into table t_user1;

也可:
家目录下:hadoop fs -put student.txt /user/hive/warehouse/myhive.db/student/

// 查询数据
select id,name,sex,age, departmenet from student;
// 退出
quit;

// 查看表结构
desc student;
desc extended student;
desc formatted student;

注意:
1、表目录下不能有文件夹(目录);

2、用户的主目录,使用命令 cat /home/hadoop/.hivehistory 可以查看到 hive 执行的历史命令

3、 执行查询时若想显示表头信息时,请执行命令:

Hive> set hive.cli.print.header=true;

4、hadoop-2.7.4(没有这个jar包)和hadoop-2.6.5两个版本的jline这个jar包的问题:

hadoop-2.6.5时报错:Terminal initialization failed; falling back to unsupported,是因为hadoop(/root/apps/hadoop-2.6.5/share/hadoop/yarn/lib)集群的 jline-0.9.94.jar 包版本

过低,替换成 hive/lib 中的 jline-2.12.jar 包即可。记住:所有 hdfs 节点都得替换hadoop-2.6.5/share/hadoop/yarn/lib/jline-0.9.4.jar 替换成 jline-2.12.jar