目录
hive第二代客户端
hive经过发展,推出了第二代客户端beeline,但是beeline客户端不是直接访问metastore服务的,而是需要单独启动hiveserver2服务。
两种模式解读
启动
二代在一代远程模式上修改,前面基础配置参考博文构建数据仓库赛题解析进行配置
相关配置文件
在hadoop中core-site.xml上添加以下内容,以实现用户代理
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
master(客户端)上
hive-site.xml
<configuration>
<!--Hive产生的元数据存放位置-->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive_remote/warehouse</value>
</property>
<!---使用本地服务连接Hive,默认为true-->
<property>
<name>hive.metastore.local</name>
<value>false</value>
</property>
<!--连接服务器-->
<property>
<name>hive.metastore.uris</name>
<value>thrift://slave1:9083</value>
</property>
</configuration>
slave1(服务器端)上
hive-site.xml
<configuration>
<!-- 数据库连接JDBC的URL地址-->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://slave2:3306/metastore?createDatabaseIfNotExist=true&useSSL=false&useUnicode=true&characterEncoding=UTF-8</value>
</property>
<!--mysql用户名-->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<!--mysql中hive用户密码-->
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
</property>
<!--mysql驱动-->
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<!-- Hive元数据存储版本的验证 -->
<property>
<name>hive.metastore.schema.verification</name>
<value>false</value>
</property>
<!--元数据存储授权-->
<property>
<name>hive.metastore.event.db.notification.api.auth</name>
<value>false</value>
</property>
<!-- Hive默认在HDFS的工作目录 -->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive_remote/warehouse</value>
</property>
<!--H2S运行绑定host-->
<property>
<name>hive.server2.thrift.bind.host</name>
<value>slave1</value>
</property>
<!--远程模式部署metastore服务模式-->
<property>
<name>hive.metastore.uris</name>
<value>thrift://slave1:9083</value>
</property>
<!-- 解决堆内存溢出 -->
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>10000</value>
</property>
</configuration>
前提:启动hadoop集群
初始化元数据库
schematool -dbType mysql -initSchema
踩坑
这个是已经初始化过数据库,已经存在表metastore
解决方法
删除表再次初始化即可
启动metastore
操作环境:slave1(服务端)
两种方式选其中一个
前台启动 关闭ctrl+c
bin/hive --service metastore
新开slave1窗口查看进程
后台启动 进程挂起 关闭使用jps + kill
输入命令回车执行 再次回车 进程将挂起后台
nohup bin/hive --service metastore &
启动hiveserver2
在metastore开启基础上再启动
两种方式选其中一个
前台启动 关闭ctrl+c
bin/hive --service hiveserver2
新开slave1窗口查看
后台启动 进程挂起 关闭使用jps + kill
输入命令回车执行 再次回车 进程将挂起后台
nohup bin/hive --service hiveserver2 &
远程连接
在master上使用beeline客户端进行连接访问
bin/beeline
! connect jdbc:hive2://slave1:10000
输入数据库用户名和密码
测试
show databases;
IDEA连接hive
选择Apache Hive
导入对应jar包
测试连接
测试