版本:
hive-0.13.1-cdh5.3.6
介绍:
数据仓库平台 将hadoop上的数据操作通SQL结合 类SQL语言HiveSQL 转换为相应的Mapreduce代码进行执行
用户接口(shell客户端 JDBC ODBC web接口) 元数据库(定义在hive中的表结构信息 默认derby 一般mysql) 解析器(HQL=>mapreduce) 数据仓库(hdfs组成的数据存储容器)
hive安装:
内嵌模式 本地模式 *远程模式
配置信息:http://archive.cloudera.com/cdh5/cdh/5/hive-0.13.1-cdh5.3.6/
地址:http://archive.cloudera.com/cdh5/cdh/5/
1.安装mysql数据库
安装完数据库(能正常使用)后:
sudo vi /etc/my.cnf
[mysql]
default-character-set=utf8
[mysqld]
character-set-server=utf8
lower_case_table_names=1 //不区分大小写
创建hive元数据的mysql用户
mysqladmin -u root password root
use mysql;
select user,host,password from user;
delete from user where password="";
create user 'hive' identified by 'hive';
create database hive;
grant all privileges on hive.* to 'hive'@'%' with grant option;
FLUSH PRIVILEGES;
使用新用户登录然后修改数据库字符编码
alter database hive character set latin1;
2.hive本地模式安装
tar -xvf hive-0.13.1-cdh5.3.6.tar.gz -C /opt/softs/
sudo ln -s /opt/softs/hive-0.13.1-cdh5.3.6/ /opt/hive
sudo vi /etc/profile
export HIVE_HOME=/opt/hive
export PATH=$PATH:$HIVE_HOME/bin
cp mysql-connector-java-5.1.38.jar $HIVE_HOME/lib/
cp $HIVE_HOME/conf/hive-default.xml.template $HIVE_HOME/conf/hive-site.xml
vi $HIVE_HOME/conf/hive-site.xml
<configuration>
<property>
<name>hive.metastore.uris</name>
<value>thrift://lvmama:9083</value>
<description>该参数指定了 Hive 的数据存储目录,默认位置在 HDFS 上面的 /user/hive/warehouse 路径下。</description>
</property>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/hive</value>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://lvmama:3306/hive?createDatabaseIfNotExist=true&useUnicode=true&characterEncoding=utf8</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hive</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>hive</value>
</property>
<property>
<name>hive.querylog.location</name>
<value>/data/hive/querylog</value> ${system:java.io.tmpdir}/${system:user.name}
<description>Location of Hive run time structured log file</description>
</property>
<property>
<name>hive.server2.logging.operation.log.location</name>
<value>/data/hive/log</value>
<description>Top level directory where operation logs are stored if logging functionality is enabled</description>
</property>
<property>
<name>hive.exec.local.scratchdir</name>
<value>/data/hive/tmp</value>
<description>Local scratch space for Hive jobs</description>
</property>
<property>
<name>hive.downloaded.resources.dir</name>
<value>/data/hive/tmp/resources</value>
<description>Temporary local directory for added resources in the remote file system.</description>
</property>
</configuration>
运行:
schematool -initSchema -dbType mysql
hive --service metastore &
hive # 进入hive-shell
create t(id int); # 后hdfs中会出现hive文件夹
hive web界面的安装:(没有hwi,待补全)
hive --service hwi &
hive shell 命令:
hive --service help # 查看有哪些服务
hive -H # 查看帮助信息
HQL:
TINTINT(1byte),SMALLINT(2byte),INT(4byte),BIGINT(5byte),FLOAT(4byte),DOUBLE(8byte),BOOLEAN(-),STRING(2G)
show describe(databases tables partition) explain(执行计划)
create (database|schema) [if not exists] database_name [comment database_comment] [location hdfs_path] [with dbproperties (property_name=value,name=value,...)]
eg.create database if not exists bigdata comment 'this is a test database';
describe databse|schema [extended] database_name
drop database|schema [if exists] database_name [restrict|cascade]
eg.drop database bigdata;
use database_name
开启服务:
zkServer.sh start && start-all.sh && start-hbase.sh
停止服务:
stop-hbase.sh && stop-all.sh && zkServer.sh stop
删除目录:
rm -rf ~/hdfs/* ~/zookeeper/logs/* ~/zookeeper.out ~/zookeeper/data/* $HADOOP_HOME/logs/* /home/hadoop/hbase/tmp/* && hdfs namenode -format
hadoop日志:
sz $HADOOP_HOME/logs/*.log
问题总结
问题
ls: 无法访问/opt/spark/lib/spark-assembly-*.jar: 没有那个文件或目录
解决
vim $HIVE_HOME/bin/hive 将 lib/spark-assembly-*.jar 替换成 jars/*.jar
问题
Mkdirs failed to create file:/XXX/XXXX
at org.apache.hadoop.util.RunJar.ensureDirectory(RunJar.java:111)
解决2
hive.exec.scratchdir该参数指定了 Hive 的数据临时文件目录,默认位置为 HDFS 上面的 /tmp/hive 路径下