Hive
hive具有sql数据库的外表,但应用场景完全不同,hive只适合用来做批量数据统计分析。
- Hive的数据存储
- Hive中的所有数据都存储在HDFS中,没有专门的数据存储格式(支持Text,SequenceFile,ParquetFile、RCFILE等)
- 只需要在创建表的时候告诉Hive数据中的列分隔符和行分隔符,hive就可以解析数据。
- hive中包含以下数据模型:DB、Table、External Table、Partition、Bucket:
- db:在hdfs中表现为${hive.metastore.warehouse.dir}目录下的一个文件夹
- table:在hdfs中表现为所属db目录下一个文件夹
- external table:外部表,与table类似,不过其数据存放位置可以任意执行路径
- 普通标:删除表后,hdfs上的文件都删了
- partition:在hdfs中表现为table目录下的子目录
- bucket:桶,在hdfs中表现为同一个表目录下根据hash散列止呕胡的多个文件,会根据不同的文件把数据放在不同的文件中。
安装配置
- 配置HIVE_HOME环境变量
vi conf/hive-env.sh
配置其中的$hadoop_home - 配置元数据库信息
vi hive-site.xml
- 安装hive和mysq完成后,将mysql的连接jar包拷贝到$HIVE_HOME/lib目录下
- 如果出现没有权限的问题,在mysql授权(在安装mysql的机器上执行)
mysql -uroot -p
,执行下面的语句 (.:所有库下的所有表 %:任何IP地址或主机都可以连接)
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;FLUSH PRIVILEGES;
hive-site.xml:
- 配置HIVE_HOME环境变量
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
<description>username to use against metastore database</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>root</value>
<description>password to use against metastore database</description>
</property>
</configuration>
- 启动方式:
- 启动为前台:bin/hiveserver2
- 启动为后台:nohup bin/hiveserver2 1>/var/log/hiveserver.log 2>/var/log/hiveserver.err &
- 启动成功后,可以在别的节点上用beeline去连接:
- 方式1:hive/bin/beeline,进入beeline的命令界面
- 输入命令连接Hiveserver:
beeline> !connect jdbc:hive2://mini1:10000
- 输入命令连接Hiveserver:
- 或者启动就连接:“`bin/beeline -u jdbc:hive2://mini1:10000 -n hadoop
- 方式1:hive/bin/beeline,进入beeline的命令界面
Jline包版本不一致的问题,需要拷贝hive的lib目录中jline.2.12.jar的jar包替换掉hadoop中的
/home/hadoop/app/hadoop-2.6.4/share/hadoop/yarn/lib/jline-0.9.94.jar