【IPV6】StarRocks访问HDFS HIVE IPV6失败如何解决?

1.问题主要是出现在访问DataNode的时候,解析IPV6地址出错。实际上是由BE去使用JNI的方式调用BE目录下hadoop的相关jar包去访问解析IPV6地址。
2.由于社区的hadoop是通过https方式去下载,所以我们需要手动将下载下来的hadoop.tar.gz和hadoop-aarch64.tar.gz包中的share\hadoop\common\hadoop-common-3.4.0.jar以及share\hadoop\hdfs\hadoop-hdfs-client-3.4.0.jar中的class文件进行一个手动替换。
3.整个社区的hadoop都没有适配IPV6,这里我们主要聚焦两个类。hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/net/NetUtils.java以及hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/protocol/datatransfer/sasl/DataTransferSaslUtil.java。public static InetAddress getPeerAddress(Peer peer)和public static InetSocketAddress createSocketAddr函数,具体修改方法这里不赘述,比较简单的字符串解析即可。之前社区基本就是用的split(":")[0]。最后将这两个java文件编译成class文件以后替换即可。(也可以编译hadoop-common和hadoop-hdfs-client两个jar包以后替换tar包)
4.注意最后替换以后要重新打包,修改文件的md5值到thirdparty/vars-x86_64.sh和thirdparty/vars-aarch64.sh。(千万注意目录层级,不然后在后续找不到文件)

1赞