我已经使用命令行在centos 6.5上安装了一个带有impala和sentry(cdh 5.2)的集群,并且还设置了openldap(没有tls)。两者都独立运行,没有任何问题。
为了为openldap配置hadoop集群,我为所有hadoop服务创建了必需的ldap组,并在core-site.xml和impala config文件中创建了必需的条目,列出了文档中提到的ldap uri等。
当我使用“impala shell-l-u test1”为ldap用户调用impala shell时,test1是一个有效的openldap用户,它要求输入我提供的密码。问题是,一旦这样做-它只是挂起。impala shell完全没有响应,impala日志和ldap日志都没有响应任何活动。我还尝试在端口389(ldap运行的地方)捕获tcpdump,但似乎没有来自impala的通信,因为根本没有交换数据包。相反,对于普通centos用户,在没有“-l”指令的情况下调用时,它可以完美地工作。下面是impala配置文件:
**IMPALA_CATALOG_SERVICE_HOST=master.server.com
IMPALA_STATE_STORE_HOST=master.server.com
IMPALA_STATE_STORE_PORT=24000
IMPALA_BACKEND_PORT=22000
IMPALA_LOG_DIR=/var/log/impala
IMPALA_CATALOG_ARGS=" -log_dir=${IMPALA_LOG_DIR} - sentry_config=/etc/hive/conf/sentry-site.xml "**
IMPALA_STATE_STORE_ARGS=" -log_dir=${IMPALA_LOG_DIR} -state_store_port=${IMPALA_STATE_STORE_PORT}"
IMPALA_SERVER_ARGS="
-server_name = master.server.com \
-sentry_config=/etc/hive/conf/sentry-site.xml \
-authorization_policy_provider_class = org.apache.sentry.provider.file.LocalGroupResourceAuthorizationProvider \
-authorization_policy_file = /user/hive/warehouse/impala-policy.ini \
-ldap_uri=ldap://slave.server.com:389 \
--enable_ldap_auth=true \
-log_dir=${IMPALA_LOG_DIR} \
-catalog_service_host=${IMPALA_CATALOG_SERVICE_HOST} \
-state_store_port=${IMPALA_STATE_STORE_PORT} \
-use_statestore \
-state_store_host=${IMPALA_STATE_STORE_HOST} \
-be_port=${IMPALA_BACKEND_PORT}"
ENABLE_CORE_DUMPS=false
# LIBHDFS_OPTS=-Djava.library.path=/usr/lib/impala/lib
# MYSQL_CONNECTOR_JAR=/usr/share/java/mysql-connector-java.jar
# IMPALA_BIN=/usr/lib/impala/sbin
# IMPALA_HOME=/usr/lib/impala
# HIVE_HOME=/usr/lib/hive
# HBASE_HOME=/usr/lib/hbase
# IMPALA_CONF_DIR=/etc/impala/conf
# HADOOP_CONF_DIR=/etc/impala/conf
# HIVE_CONF_DIR=/etc/impala/conf
# HBASE_CONF_DIR=/etc/impala/conf
如果你有过这样的经历,请帮我解决这个问题。提前谢谢。
1条答案
按热度按时间f0ofjuux1#
我找到了根本原因。原因是impala守护程序没有从impala配置文件(通常位于/etc/default/impala)获取ldap详细信息。我不知道是什么解决了它,但只是重新安装 Impala 使它拿起的细节要求。完成后,下一个挑战是按照impala期望的方式设置openldap组,即dn应该包含uid而不是cn和rest,使用ldap\u listdn参数,提供在ldap日志中注册的完整dn。这是一个非常愚蠢的问题,它让我详细地学习了openldap。