我想从集群中删除节点优雅地。我将以下内容添加到我的 hadoop-site.xml 中:
<property>
<name>dfs.hosts.exclude</name>
<value>/etc/hadoop/conf.dist/dfs.hosts.exclude</value>
<final>true</final>
</property>
我正在将要删除的节点添加到文件并执行
hadoop dfsadmin -refreshNodes
以 root 身份,但我得到
refreshNodes: org.apache.hadoop.fs.permission.AccessControlException: Superuser privilege is required
HDFS 分区上的 mod 是 777。
运行 Cloudera 的 hadoop-ec2 发行版,版本 0.18
答案1
查看 ${HADOOP_CONF_DIR}/hadoop-policy.xml 并查看 root 是否有权限执行此操作,root 可能是系统的超级用户,但可能不是应用程序的超级用户。
尝试此链接http://hadoop.apache.org/common/docs/current/service_level_auth.html
斯图尔特
答案2
属性 dfs.hosts.exclude 指定一个文件,其中包含不允许连接到 namenode 的主机列表。必须指定该文件的完整路径名。
cd <hadoop_installation>/bin
- 启动数据节点
hadoop-daemon.sh start datanode
- 启动 tasktracker
hadoop-daemon.sh start tasktracker
- 停止数据节点(从集群中删除数据节点)
hadoop-daemon.sh stop datanode
- 停止 tasktracker(从集群中删除 tasktracker)
hadoop-daemon.sh stop tasktracker