hive安装
1 前提
- 安装java
- 安装hadoop
2 下载安装
2.1 下载
从这里下载,这里以apache-hive-2.3.5为例。 https://hive.apache.org/downloads.html
2.2 解压 & 配置环境变量
tar -xzvf hive-2.3.5.tar.gz
export HIVE_HOME=/home/xxx/hive-2.3.5
export PATH=$HIVE_HOME/bin:$PATH
3 配置
3.1 前提
- 必须在path中有hadoop,或者
- export HADOOP_HOME=<hadoop-install-dir>
3.2 修改配置文件
cd HIVE_HOME/conf
cp hive-default.xml.template hive-default.xml
cp hive-log4j2.properties.template hive-log4j2.properties
- 默认情况下hive从hive-default.xml中获取配置,所以这个最好不要改动,当做是hive的默认配置
- 可以在hive-site.xml中定义或者重定义配置。重定义可以覆盖hive-default.xml中的配置。所以有新的修改可以改在hive-site.xml中
- hive-site.xml默认是空白的,在添加配置项的时候需要在<configuration></configuration>中添加,否则启动hive会报错。
3.3 配置日志文件(可选)
hive的日志默认在/tmp/<user.name>/下,可以通过修改配置文件来改变:
- 在$HIVE_HOME/conf/hive-log4j2.properties中添加 hive.log.dir=<other_location>
- 修改query log位置:在hive-site.xml中添加如下配置:
<property>
<name>hive.querylog.location</name>
<value>other_location</value>
</property>
3.4 创建hdfs文件
在hdfs中创建如下目录:
$ $HADOOP_HOME/bin/hadoop fs -mkdir /tmp
$ $HADOOP_HOME/bin/hadoop fs -mkdir /user/hive/warehouse
$ $HADOOP_HOME/bin/hadoop fs -chmod g+w /tmp
$ $HADOOP_HOME/bin/hadoop fs -chmod g+w /user/hive/warehouse
/user/hive/warehouse 是在$HIVE_HOME/conf/hive-default.xml 中指定的(hive.metastore.warehouse.dir), 如3.2所述,如果要修改该路径,可以在hive-site.xml中修改。
4 运行
4.1 修改内置derby配置
hive默认使用内嵌的derby数据库来存储元数据,这样有个缺点:
- derby会在运行hive命令的本地目录生成metastore_db文件,如果换一个目录就看不到之前的元数据了
- 每次切换目录都需要运行$HIVE_HOME/bin/schematool -dbType
-initSchema 来初始化metastore_db
原因就是在hive-default.xml的默认配置下,metastore_db是生成在当前目录:
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:derby:;databaseName=metastore_db;create=true</value>
</property>
所以我们可以配置下内置的derby,让其metastore_db只生成在一个目录下: 在hive-site.xml中添加如下配置,来覆盖默认配置:
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:derby:/home/xxx/metastore_db;create=true</value>
</property>
4.2 初始化derby
运行命令
$HIVE_HOME/bin/schematool -dbType derby -initSchema
运行结果最后是 schemaTool completed,则表示成功,这个时候可以看到在/home/xxx/下有metastore_db存在。
如果出现类似Error: FUNCTION 'NUCLEUS_ASCII' already exists的错误,则说明在/home/xxx/下存在有metastore_db,则删除掉metastore_db,重新运行以上命令即可。
4.3 启动hive
配置好外置的derby后,我们就可以启动hive了。运行show tables 验证安装。