1、 安装Hive
cd /tools
tar -zxvf hive-0.11.0.tar.gz
mv hive-0.11.0 /usr/java/hive
cd /usr/java/
chown -R hadoop:hadoop hive/
2、 配置Hive
(1) 增加HIVE_HOME
vi /etc/profile
export HIVE_HOME=/usr/java/hive
PATH后添加 :$HIVE_HOME/bin:$HIVE_HOME/conf
(2) 增加配置文档(默认该文档不存在)
cd $HIVE_HOME/conf
cp hive-default.xml.template hive-site.xml
(3) 在配置文档中指定Hive的数据存储目录(默认为HDFS上的/user/hive/warehose)
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/hive/warehose</value>
</property>
(4) 在配置文档中指定Hive的数据临时目录(默认为/tmp/hive-${user.name})
<property>
<name>hive.exec.scratchdir</name>
<value>/tmp/hive-${user.name}</value>
<description>Scratch space for Hive jobs</description>
</property>
(5) 在配置文档中指定Hive的数据库连接(默认为Derby数据库,以javax.jdo开头)
n Hive的存储是建立在Hadoop文件系统上的,Hive本身没有专门的数据存储格式,也不能建索引
n Hive的元数据是存储在RDBMS上的。
n 配置mysql连接:
<property>
<name>hive.metastore.local</name>
<value>true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>
<description>JDBC MySQL连接字符串</description>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>JDBC MySQL Classname</description>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hive</value>
<description>username</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>hive</value>
<description>password</description>
</property>
n 复制mysql JDBC驱动到hive/lib中
cp mysql-connector-java-5.1.10-bin.jar /usr/java/hive/lib/
3、 MySQL配置
(1)安装mysql
在Redhat安装包中选中Server中的mysqlServer下所有包,进行安装
(2)启动mysqld服务
/usr/bin/ mysqld_safe -uroot &
(3)运行setup或ntsysv将mysqld设置自动启动
(4)启动mysql
mysql -uroot -p
(5)修改mysql的root用户密码
mysqladmin -u root -p password 123456
在Enter Password时直接回车(要求输入原密码,root初始密码为空)
(6)登陆mysql
mysql -uroot -p
(7)创建hive用户
create user 'hive'@'%' identified by 'hive';
(8)赋予权限
grant all privileges on *.* to 'hive'@'%' with grant option;
grant all privileges on *.* to 'root'@'%' with grant option;
(9)刷新系统权限相关表,让设置立刻生效
flush privileges;
(10)查看user表
user mysql;
select user,password,host from user;
(11)修改root远程访问密码(root远程访问密码为空)
update user set password=PASSWORD('wddgmy') where user='root';
flush privileges;
(12)允许远程用户访问(修改/etc/my.conf)
vi /etc/my.conf
注释bind-address行
#bind-address = 127.0.0.1
(13)用hive用户登陆mysql
mysql -uhive -p
(14)hive用户登陆报错
ERROR 1045 (28000): Access denied for user 'hive'@'localhost' (using password: YES)
(15)hive用户登陆报错处理
增加hive访问localhost权限
grant all privileges on *.* to 'hive'@'localhost';
update user set password=PASSWORD('hive') where user='hive';
flush privileges;
4、 启动
hive
5、 启动hive报错
WARN conf.HiveConf: DEPRECATED: Configuration property hive.metastore.local no longer has any effect. Make sure to provide a valid value for hive.metastore.uris if you are connecting to a remote metastore.
6、 设置hive错误日志记录级别(log4j)
bin/hive -hiveconf hive.root.logger=DEBUG,console
7、 查看hive的参数设置
hive
hive> SET -v
8、 启动hive报错处理
hive 0.10和0.11之后的版本不在使用hive.metastore.local属性,删除该设置
<property>
<name>hive.metastore.local</name>
<value>true</value>
</property>
9、 验证Hive
show tables
10、 验证报错
FAILED: Error in metadata: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.metastore.HiveMetaStoreClient
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask
11、 验证报错处理
没有mysql jdbc驱动包,复制mysql JDBC驱动到hive/lib中
cp mysql-connector-java-5.1.10-bin.jar /usr/java/hive/lib/
12、 验证Hive
show tables
13、 示例
(1) 建表
create table tatol(DATECOLUMN int,DATECOUNT int) row format delimited fields terminated by ',';
(2) 导入数据
load data inpath '/user/hadoop/TOTAL/part-m-0000' overwrite into table tatol;