【问题标题】:Access to HDFS HA cluster from ClickHouse failed with the error HdfsConfigNotFound从 ClickHouse 访问 HDFS HA 集群失败,出现错误 HdfsConfigNotFound
【发布时间】:2020-07-03 09:18:08
【问题描述】:

我在 Clickhouse 上创建了一个基于 HDFS 的表。我的 HDFS 集群开启了 HA,但是在查询我创建的表时出错 我的DDl:

CREATE TABLE IF NOT EXISTS userItemLable ON CLUSTER cluster_1st( 
label int,
length int,
duration int
)ENGINE=HDFS('hdfs://cluster1/test/','')

错误代码:

Code: 210. DB::Exception: Received from localhost:9000. DB::Exception: Unable to connect to HDFS: InvalidParameter: Cannot parse URI: hdfs://cluster1, missing port or invalid HA configuration Caused by: HdfsConfigNotFound: Config key: dfs.ha.namenodes.cluster1 not found.

我尝试将hdfs-site.xml复制到/etc/clickhouse-server文件路径,但问题没有解决。

然后我把这个文件重命名为hdfs-client.xml,结果是一样的。

最后,在config.xml中,我没有找到如何配置HDFS HA。

【问题讨论】:

标签: hadoop hdfs high-availability clickhouse


【解决方案1】:

您可以将端口 8020 与 HDFS ip 和路径一起使用。 它对我有用。 例子 : CREATE TABLE ELM.hdfs_table (name String, value UInt32) ENGINE=HDFS('hdfs://168.11.12.103:8020/user/nirakar/clickhouse/hdfs_table', 'TSV');

INSERT INTO ELM.hdfs_table VALUES ('one', 1), ('two', 2), ('three', 4);

注意:确保您的本地服务器 /etc/hosts 应该有 HDFS 服务器的 IP 地址。

【讨论】:

    【解决方案2】:

    首先需要将文件[hdfs-site.xml]复制到路径[/etc/clickhouse-server/hdfs-client.xml]

    其次,编辑文件[/etc/init.d/clickhouse-server]并添加以下配置:

    [export LIBHDFS3_CONF=/etc/clickhouse-server/hdfs-client.xml]

    之后,文件[/etc/init.d/clickhouse-server]应该是这样的:

        sudo cat -n  /etc/init.d/clickhouse-server
        1  #!/bin/sh
        2  ### BEGIN INIT INFO
        3  # Provides:          clickhouse-server
        4  # Default-Start:     2 3 4 5
        5  # Default-Stop:      0 1 6
        6  # Required-Start:    $network
        7  # Required-Stop:     $network
        8  # Short-Description: Yandex clickhouse-server daemon
        9  ### END INIT INFO
        10
        11  CLICKHOUSE_USER=clickhouse
        12  CLICKHOUSE_GROUP=${CLICKHOUSE_USER}
        13  SHELL=/bin/bash
        14  PROGRAM=clickhouse-server
        15  CLICKHOUSE_GENERIC_PROGRAM=clickhouse
        16  CLICKHOUSE_PROGRAM_ENV=""
        17  EXTRACT_FROM_CONFIG=${CLICKHOUSE_GENERIC_PROGRAM}-extract-from-config
        18  CLICKHOUSE_CONFDIR=/etc/$PROGRAM
        19  CLICKHOUSE_LOGDIR=/var/log/clickhouse-server
        20  CLICKHOUSE_LOGDIR_USER=root
        21  CLICKHOUSE_DATADIR=/var/lib/clickhouse
        22  if [ -d "/var/lock" ]; then
        23      LOCALSTATEDIR=/var/lock
        24  else
        25      LOCALSTATEDIR=/run/lock
        26  fi
        27
        28  if [ ! -d "$LOCALSTATEDIR" ]; then
        29      mkdir -p "$LOCALSTATEDIR"
        30  fi
        31
        32  CLICKHOUSE_BINDIR=/usr/bin
        33  CLICKHOUSE_CRONFILE=/etc/cron.d/clickhouse-server
        34  CLICKHOUSE_CONFIG=$CLICKHOUSE_CONFDIR/config.xml
        35  LOCKFILE=$LOCALSTATEDIR/$PROGRAM
        36  CLICKHOUSE_PIDDIR=/var/run/$PROGRAM
        37  CLICKHOUSE_PIDFILE="$CLICKHOUSE_PIDDIR/$PROGRAM.pid"
        38  # CLICKHOUSE_STOP_TIMEOUT=60 # Disabled by default. Place to /etc/default/clickhouse if you need.
        39
        40  export LIBHDFS3_CONF=/etc/clickhouse-server/hdfs-client.xml
    
    

    【讨论】:

      猜你喜欢
      • 2016-01-15
      • 2019-12-09
      • 1970-01-01
      • 2019-04-17
      • 2016-11-25
      • 2022-10-13
      • 1970-01-01
      • 1970-01-01
      • 2015-01-05
      相关资源
      最近更新 更多