1.将hive的压缩包拷到/usr/local目录进行解压
[root@namenode local]# tar -zxvf apache-hive-1.2.1-bin.tar.gz
2.将/usr/local/apache-hive-1.2.1-bin/conf目录下的hive-default.xml.template 复制为hive-site.xml
因为默认会首先加载hive-default.xml.template文件再加载hive-site.xml文件
[root@namenode conf]# cp hive-default.xml.template hive-site.xml
3.将hive-site.xml文件中的内容删掉,并替换成如下内容
使用vi命令进入编辑模式后,删除到最后一行
:.,$-1d
下面的配置文件配置的是远程mysql
<configuration>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://192.168.1.10: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>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
</property>
<property>
<name>hive.metastore.uris</name>
<value>thrift://192.168.57.5:9083</value>
</property>
</configuration>
4.将hive的命令加入环境变量中,设置环境变量的文件为/etc/profile
修改完成/etc/profile文件后需要重新加载环境变量配置文件,才可生效
[
root@namenode apache-hive-1.2.1-bin]# source /etc/profile
5.进入mysql中
[root@namenode bin]# mysql -p -uroot -S /tmp/mysql3306.sock
6.将mysql中user表中用户名为空的两条数据删除,得到如下结果
mysql> select user,host from user;
+------+-----------+
| user | host |
+------+-----------+
| root | % |
| root | 127.0.0.1 |
| root | localhost |
+------+-----------+
3 rows in set (0.00 sec)
7.这个是远程的,元数据可以使用本地的,可以使用远程的,这要选远程,这样后面使用spark-sql的时候
可以避免再次配置
8.元数据 hive元数据就是存储hive里面的关于数据的信息的(不是数据本身)
hive在执行的时候,会去mysql里面获取这些数据信息.
hive在hdfs里面数据的存储位置:
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
</property>
远程数据源提供的端口:
<property>
<name>hive.metastore.uris</name>
<value>thrift://192.168.57.5:9083</value>
</property>
9.在使用前,要开启hive的数据源服务
nohup hive --service metastore &
nohup是防止中断信号(就是防止你关闭连接后,metastore也被关闭),&是后台运行
nohup hive --service metastore &
启动完成后查看vi nohup.out文件无报错信息,证明启动成功
ps -ef|grep hive
10.启动hive
[root@namenode apache-hive-1.2.1-bin]# hive
11.使用show databases命令
hive> show databases;
OK
default
Time taken: 0.67 seconds, Fetched: 1 row(s)
12.在hive中新建一个数据库syc
hive> create database syc;
OK
Time taken: 0.656 seconds
13.查看新建的数据库syc
hive> show databases;
OK
default
syc
Time taken: 0.099 seconds, Fetched: 2 row(s)
14.此时查看mysql中的hive数据库(存的是hive的元数据)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| hive |
| logs |
| message |
| mysql |
| performance_schema |
| test |
+--------------------+
7 rows in set (0.00 sec)
15.进入hive数据库
mysql> use hive
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
16.查看mysql中hive数据库的表
mysql> show tables;
+--------------------------+
| Tables_in_hive |
+--------------------------+
| cds |
| database_params |
| dbs |
| func_ru |
| funcs |
| global_privs |
| part_col_stats |
| partitions |
| roles |
| sds |
| sequence_table |
| serdes |
| skewed_col_value_loc_map |
| skewed_string_list |
| tab_col_stats |
| tbls |
| version |
+--------------------------+
17 rows in set (0.00 sec)
17.查看dbs表(dbs表中告诉了我们hive中存在hdfs中的数据都放在了哪里)
mysql> select * from dbs;
+-------+-----------------------+-------------------------------------------------+---------+------------+------------+
| DB_ID | DESC | DB_LOCATION_URI | NAME | OWNER_NAME | OWNER_TYPE |
+-------+-----------------------+-------------------------------------------------+---------+------------+------------+
| 1 | Default Hive database | hdfs://namenode:9000/user/hive/warehouse | default | public | ROLE |
| 2 | NULL | hdfs://namenode:9000/user/hive/warehouse/syc.db | syc | root | USER |
+-------+-----------------------+-------------------------------------------------+---------+------------+------------+
2 rows in set (0.00 sec)
17.mysql的元数据则存在了information_schema数据库中
16.查看http://192.168.1.10:50070/explorer.html#/user/hive/warehouse/中可以浏览到hdfs中的syc数据
17.hive数据库
hive数据库里的表存储了hive的相关元数据
hive里面就是存储了这些信息
在hive中建立了新的数据库syc,那么mysql数据库的dbs表里面就有这个信息了。
这就是数据库的元数据。
这儿是hive的元数据,其实mysql也有元数据的。mysql的元数据在这。
元数据就是数据的定义信息。
hive的元数据,托管到了mysql里面,因为默认的derby只能使用单连接,不能多用户同时访问。
刚才在hive里面建立了syc的数据库
所以在hdfs里面多了一个目录
/user/hive/warehouse/syc.db
这目录存放syc数据库里面的数据