HMS
HMS 端口一般通过 hive.metastore.port
参数定义,而客户端通常通过 hive.metastore.uris
参数配置。
CREATE EXTERNAL CATALOG hudi_catalog_hms
PROPERTIES (
"type" = "hudi",
"hive.metastore.type"="hive",
"metastore.sasl.enabled"="false",
"hive.metastore.type" = "hive",
"hive.metastore.uris" = "thrift://192.168.1.222:9083,thrift://192.168.1.73:9083",
);
SET CATALOG hudi_catalog_hms;
SHOW CATALOGS;
DROP CATALOG hudi_catalog_hms;
HDFS
其中核心包含了如下两个配置文件:
core-site.xml
集群全局配置参数。hdfs-site.xml
HDFS 相关参数。
可以直接通过 find -name 'hdfs-site.xml'
查找并复制配置文件,注意其中的部分参数可能使用的是域名,可以直接修改为 IP 地址,或者将域名添加到 /etc/hosts
配置文件中。
一般对应的核心配置内容如下。
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<configuration>
<property>
<name>dfs.nameservices</name>
<value>hacluster</value>
</property>
<property>
<name>dfs.ha.namenodes.hacluster</name>
<value>3,4</value>
</property>
<property>
<name>dfs.namenode.rpc-address.hacluster.3</name>
<value>192.168.0.147:8020</value>
</property>
<property>
<name>dfs.namenode.rpc-address.hacluster.4</name>
<value>192.168.0.175:8020</value>
</property>
<property>
<name>dfs.client.failover.proxy.provider.hacluster</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
</configuration>
可以通过如下方式配置。
SET CATALOG hive;
USE hive.default;
CREATE EXTERNAL TABLE user_info(
id STRING,
name STRING,
gender STRING,
age INT,
addr STRING
)
PARTITIONED BY(year STRING)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
STORED AS TEXTFILE LOCATION '/hive/user_info';
hdfs dfs -mkdir /hive/user_info
INSERT INTO user_info PARTITION(year="2018") VALUES("12005000201", "A", "男", 19, "A城市");
安全集群
需要复制目标集群的 krb5.con
hive.keytab
文件,在进行认证时需要使用域名,如果没有配置 DNS 解析,那么就需要修改 /etc/hosts
文件,然后通过如下命令测试。
export KRB5_CONFIG=/opt/krb5.conf
kinit -kt /opt/hive.keytab hive/hadoop.your_domain.com@YOUR_DOMAIN.COM
执行 kinit
命令可能会比较慢。
同时需要修改上述的创建 CATALOG
语句,增加 "metastore.sasl.enabled"="true"
参数;修改 JAVA 的启动参数,增加 -Djava.security.krb5.conf=/opt/krb5.conf
配置;同时,修改 hdfs-site.xml
配置文件,增加如下参数。
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<configuration>
<property>
<name>hadoop.security.authentication</name>
<value>KERBEROS</value>
</property>
</configuration>
另外,如果发现启动异常,可以在 JAVA 启动参数中增加 -Dsun.security.krb5.debug=true
调试参数,此时日志会打印在 fe.out
文件中。