HiverServer2支持远程多客户端的并发和认证,支持通过JDBC、Beeline等连接操作。hive默认的Derby数据库,由于是内嵌的文件数据库,只支持一个用户的操作访问,支持多用户需用mysql保存元数据。现在关心的是HiveServer如何基于mysql元数据库管理用户权限,其安全控制体系与Linux及Hadoop的用户是否存在联系。
1)remote方式部署Hive
Hive中metastore(元数据存储)的三种方式:内嵌Derby方式、基于mysql的Local方式、基于mysql的Remote方式。显然多用户并发模式是采用remote方式部署,Hiveserver元数据放置在mysql数据库并在mysql建立用户,HiveClient远程连接。回顾下remote方式部署Hive:
第一步:元数据库mysql创建用户名和数据库;
第二步:HiveServer在 hive-site.xml 文件中配置jdbc URL、驱动、用户名、密码等属性;
javax.jdo.option.ConnectionURL
jdbc:mysql://mysql server IP/hive_meta?createDatabaseIfNotExist=true
JDBC connect string for aJDBC metastore
javax.jdo.option.ConnectionDriverName
com.mysql.jdbc.Driver
Driver class name for aJDBC metastore
javax.jdo.option.ConnectionUserName
hive
username to use againstmetastore database
javax.jdo.option.ConnectionPassword
hive
password to use againstmetastore database
hive.metastore.warehouse.dir
/user/hive/warehouse
base hdfs path :locationof default database for the warehouse
第三步:HiveClient在hive-site.xml 文件中配置thrift(负责client和server的通信)和存储路径;
hive.metastore.uris
thrift://Hiveserver IP:9083
Thrift uri for the remotemetastore. Used by metastore client to connect to remotemetastore.
hive.metastore.warehouse.dir
/user/hive/warehouse
location of defaultdatabase for the warehouse
hive.metastore.local name >
false value>