hadoop hive(五)

hadoop工具(一):hive:它只是一个工具可在任意一个节点安装,和集群没有任何关系,.
hive的作用

安装使用hive(cluster1)

install mysql 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# https://dev.mysql.com/downloads/repo/yum/ 查看对应版本
wget https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
rpm -ivh mysql57-community-release-el7-9.noarch.rpm
yum install -y mysql-server
echo "skip-grant-tables" >> /etc/my.cnf
systemctl start mysqld
mysql -uroot -proot
flush privileges;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';
sed -i -e '/^skip-grant-tables/d' /etc/my.cnf
systemctl restart mysqld
mysql -uroot -proot
CREATE DATABASE `hive` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
grant all privileges on *.* to root@localhost identified by 'root';
flush privileges;
install hive

scp ./apache-hive-2.1.1-bin.tar.gz root@cluster1:/root

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
cd /root
tar -zxvf apache-hive-2.1.1-bin.tar.gz
mv apache-hive-2.1.1-bin hive
mv hive hadoop-2.8.1/
cd hadoop-2.8.1/hive/conf/
# cp hive-default.xml.template hive-site.xml
cp hive-env.sh.template hive-env.sh
cp hive-log4j2.properties.template hive-log4j2.properties
cp hive-exec-log4j2.properties.template hive-exec-log4j2.properties
vim hive-site.xml
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true&amp;useUnicode=true&amp;characterEncoding=UTF-8&amp;useSSL=false</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>
<property>
<name>hive.metastore.schema.verification</name>
<value>false</value>
</property>
</configuration>
hive/lib目录下放mysql.jar
1
scp ./mysql-connector-java-5.1.44-bin.jar root@cluster1:/root/hadoop-2.8.1/hive/lib/
配置环境变量
1
2
3
4
echo "export HIVE_HOME=/root/hadoop-2.8.1/hive" >> ~/.bashrc
echo "export PATH=\${PATH}:\${HIVE_HOME}/bin" >> ~/.bashrc
echo "export HIVE_CONF_DIR=\${HIVE_HOME}/conf" >> ~/.bashrc
source ~/.bashrc
启动hive,建立在集群之上
1
2
3
4
5
6
7
8
9
10
11
# 启动三台datanode(ZK)
zkServer.sh start
hadoop-daemon.sh start journalnode
# 启动start-dfs.sh
start-dfs.sh
# hive在第一次登录的时候需要用如下命令初始化
schematool -dbType mysql -initSchema
# 启动hive metastore进程
hive --service metastore &
# 运行hive
hive

创建一些数据

1
2
3
4
5
6
vim /root/d.data
1 iphone8 64G 8000
2 iphone7 64G 7000
3 iphone6 64G 6000
4 iphone5 64G 5000
5 iphone4 64G 4000

hive语法
1
2
3
4
5
6
7
8
9
10
11
12
13
SHOW TABLES;
create table t_order(id int,name string,container string,price double)
row format delimited
fields terminated by ' ';
SHOW TABLES;
# 数据本来只那里,只能用来查看
# 所以不能使用 insert into **
# 向表中加载数据
load data local inpath '/root/d.data' into table t_order;
# 查看与统计
select * from t_order;
select count(*) from t_order; # 执行的MapReduce程序
通过mysql查看hive上传的时的表的信息
1
2
3
4
5
6
7
8
9
10
11
user hive;
show tables;
# 记录元数据的表
select * from DBS;
# DB_LOCATION_URI: hdfs://ns1/user/hive/warehouse
# 查看数据库的内容 http://cluster1:50070/explorer.html#/user/hive/warehouse
# 查看在hive中创建的表
select * from TBLS;
# 表中的字段
select * from COLUMNS_V2;

用hive创建数据库或表就相当于在hdfs中创建目录

Share Comments