hive内嵌安装步骤
内嵌模式,特点是:hive服务和metastore服务运行在同一个进程中,derby服务也运行在该进程中。
该模式无需特殊配置
1.首先去cdh官网下载hive
2.解压缩,并切换到hive配置文件目录中
tar -zxvf hive-0.13.1-cdh5.3.6.tar.gz -C newcdh/
cp hive-log4j.properties.template hive-log4j.properties
cp hive-env.sh.template hive-env.sh
3.修改hive-env.sh文件,设置下面的两行配置,HADOOP_HOME和HIVE_CONF_DIR配置
HADOOP_HOME=/Users/mac/software/cdh/hadoop-2.5.0-cdh5.3.6/
export HIVE_CONF_DIR=/Users/mac/software/newcdh/hive-0.13.1-cdh5.3.6/conf
4.这时候可以直接执行启动hive命令了
mac:hive-0.13.1-cdh5.3.6 mac$ ./bin/hive
Logging initialized using configuration in file:/Users/mac/software/newcdh/hive-0.13.1-cdh5.3.6/conf/hive-log4j.properties
hive>
5.启动成功后,执行命令验证是否安装成功。
hive> show databases;
OK
default
Time taken: 0.539 seconds, Fetched: 1 row(s)
hive> use default;
OK
Time taken: 0.021 seconds
hive> show tables;
OK
Time taken: 0.037 seconds
6.同时查看hive目录下生成了metastore_db目录结构,这是由于hive默认使用derby数据库,因此在启动过程中使用derby数据库存储表结构相关信息,注意,这里的derby数据库是单会话的,一次只能有一个连接,并且derby数据库会在当前目录下生成
hive本地安装配置及高级配置
本地模式,特点是:hive服务和metastore服务运行在同一个进程中,mysql是单独的进程,可以在同一台机器上,也可以在远程机器上。
7.下面配置修改为mysql数据库,这样可以支持多会话连接,在conf目录下新建hive-site.xml文件并添加如下内容
cd /Users/mac/software/newcdh/hive-0.13.1-cdh5.3.6/conf
touch hive-hive-site.xml
vi hive-hive-site.xml
javax.jdo.option.ConnectionURL
jdbc:mysql://localhost:3306/hive_metastore?createDatabaseIfNotExist=true
mysql连接地址
javax.jdo.option.ConnectionDriverName
com.mysql.jdbc.Driver
mysql驱动类
javax.jdo.option.ConnectionUserName
hive
刚刚创建的用户名hive
javax.jdo.option.ConnectionPassword
123456
hive用户对应的mysql密码
同时需要讲mysql驱动程序拷贝到lib目录下,否则会报驱动程序找不到的错误
cp ../../cdh/hive-0.13.1-cdh5.3.6/lib/mysql-connector-java-5.1.27-bin.jar ./lib/
重启hive,验证
mac:hive-0.13.1-cdh5.3.6 mac$ ./bin/hive
Logging initialized using configuration in file:/Users/mac/software/newcdh/hive-0.13.1-cdh5.3.6/conf/hive-log4j.properties
hive> show databases;
OK
default
Time taken: 0.484 seconds, Fetched: 1 row(s)
hive> use default;
OK
Time taken: 0.02 seconds
hive> show tables;
OK
sample_07
sample_08
xxx
这里便是因为hive使用了我们配置的mysql数据库,mysql数据库中原来配置过一次hive表,里面有之前建立的表,由此验证配置mysql成功
这时查询表数据会报错,因为没有启动hdfs服务
select * from xxx;
FAILED: SemanticException Unable to determine if hdfs://mac.cn:8020/user/hive/warehouse/xxx is encrypted: java.net.ConnectException: Call From mac.local/172.31.218.249 to mac.cn:8020 failed on connection exception: java.net.ConnectException: Connection refused; For more details see: http://wiki.apache.org/hadoop/ConnectionRefused
启动hdfs服务
cd software/cdh/hadoop-2.5.0-cdh5.3.6/
./sbin/start-dfs.sh
再次查询后
hive> select * from xxx;
OK
Time taken: 0.439 seconds
8.配置在查询结果中显示列名称
在hive-site.xml中配置
hive.cli.print.header
true
Whether to print the names of the columns in query output.
重新进入hive命令行验证是否成功
hive> select * from xxx;
OK
xxx.id
Time taken: 0.524 seconds
9.配置默认显示当前所在的数据库
在hive-site.xml中添加
hive.cli.print.current.db
true
Whether to include the current database in the Hive prompt.
重新进入hive命令行验证是否成功
mac:hive-0.13.1-cdh5.3.6 mac$ ./bin/hive
Logging initialized using configuration in file:/Users/mac/software/newcdh/hive-0.13.1-cdh5.3.6/conf/hive-log4j.properties
hive (default)> show databases;
OK
database_name
default
Time taken: 0.484 seconds, Fetched: 1 row(s)
hive (default)>