hive单机部署
hadoop,hbase,zookeeper安装好了,现在来安装hive
hadoop 版本:2.8.4
hbase 版本:2.1.3
hive 版本:2.3.4
zookeeper 版本:3.4.13
1.hive下载:http://mirrors.shu.edu.cn/apache/hive/
2.上传到linux解压
3.配置环境变量
vi /etc/profile
export HIVE_HOME=/hive
把$HIVE_HOME/bin:$PATH加到path中去
>hive --version 就能看到hive版本
安装成功
4.配置
进入/hive/conf目录
vi hive-site.xml 配置hive-site.xml文件,没有复制一份
在hive-site.xml中加以下配置,不然报错:java.net.URISyntaxException: Relative path in absolute URI: ${system:java.io.tmpdir%7D/$%7Bsystem:us
<property> <name>system:java.io.tmpdir</name> <value>/tmp/hive/java</value> </property> <property> <name>system:user.name</name> <value>${user.name}</value> </property>
将里面一些system....路径的value,全部改成/tmp/hive/iotmp
vi hive-env.xml,配置hive-env.xml,没有复制一份,加以下内容
export HADOOP_HOME=/hadoop/hadoop-2.8.4 export HIVE_CONF_DIR=/hive/conf
>hive 进入hive命令行
能进入hive命令行,但是提示版本不匹配
但网上别人也提示这个,可以正常使用
说是hive要有一个数据库来存储它的元数据,默认是使用derby,也有使用mysql,大多使用mysql,我也使用mysql配置
在/hive/conf/hive-site.xml文件中加以下内容:
<property> <name>javax.jdo.option.ConnectionUserName</name> //用户名(这4是新添加的,记住删除配置文件原有的哦!) <value>root</value> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> //密码 <value>123456</value> </property> <property> <name>javax.jdo.option.ConnectionURL</name> //mysql <value>jdbc:mysql://192.168.1.136:3306/hive</value> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> //mysql驱动程序 <value>com.mysql.jdbc.Driver</value> </property>
配置后,把mysql驱动包拷贝到/hive/lib/下
在/hive/bin下执行:
> schematool -dbType mysql -initSchema 将hive元数据格式化一下
hive元数据保存在内嵌的 Derby 数据库中,只能允许一个会话连接,只适合简单的测试。为了支持多用户多会话,则需要一个独立的元数据库,我们使用 MySQL 作为元数据库,Hive 内部对 MySQL 提供了很好的支持,配置一个独立的元数据库需要增加以下几步骤:
1)安装mysql服务端和客户端,这个在我本机上安装好了
2)安装hive,也安装好了
3)为Hive建立相应的MySQL账户,并赋予足够的权限,执行命令如下:
发现hive-site.xml配置文件,原本有derby数据库的配置信息,没有删除掉,我们只是在上面加了mysql的配置,derby的配置没有注释掉,注释掉,再格式化
还是不行,
报错信息不一样了,使用的是我配置的mysql数据库
网上说是用户权限不足,继续:
我的mysql是安装在我本地windows机器上,cmd
> cd C:\Program Files\MySQL\MySQL Server 5.5\bin 进入mysql安装目录
> mysql -hlocalhost -uroot -p
> select user,host from mysql.user where user='root';\
> grant all privileges on *.* to 'root'@'192.168.1.166' identified by '123456'; 授权
> flush privileges;
> net stop mysql; 先关闭mysql
> net start mysql; 再重启mysql
再在/hive/bin 下执行格式化
成功了
> show databases;