我正在运行以下命令:
int countMatches(const char s1[], const char s2[])
{
char s1copy[MAXWORDLEN+1];
strcpy(s1copy, s1);
int nMatches = 0;
// For every character in s2
for (int k2 = 0; s2[k2] != '\0'; k2++)
{
// For every character in the copy of s1
for (int k1 = 0; s1copy[k1] != '\0'; k1++)
{
// If they match, blot it out of the copy of s1
// so it won't be matched again
if (s1copy[k1] == s2[k2])
{
nMatches++;
s1copy[k1] = '#';
break;
}
}
}
return nMatches;
}
我知道这个命令确实对应于下面的内容:
hadoop fs -ls
如何确定hadoop fs -ls hdfs://<namenode>:<namenode_port>
和namenode
的这些值?
我已经尝试过检查环境变量并查看文档,但我找不到任何可以做到的事情。
答案 0 :(得分:2)
您需要为core-site.xml
和<namenode>
值引用hadoop配置文件<namenode_port>
。搜索配置属性fs.defaultFS
(最新)或fs.default.name
(已删除)。
core-site.xml文件位于/etc/hadoop/conf
或$HADOOP_HOME/etc/hadoop/conf
个位置。
修改
有一种动态的方法可以做到这一点。下面的hadoop命令将给出HDFS URI。
hdfs getconf -confKey "fs.defaultFS"
但是,每次执行hadoop命令时,hadoop都会加载客户端配置xml文件。如果你想测试一下,可以通过将/ etc / hadoop / conf的内容复制到新目录中来创建一些单独的客户端配置(让我们说/ home // hadoop-conf,它应该包含core- site.xml,hdfs-site.xml,mapred-site.xml),使用命令export HADOOP_CONF_DIR=/home/<USER>/hadoop-conf
覆盖环境变量,更新core-site.xml文件,然后使用hadoop命令进行测试。请记住,这仅用于测试目的,在完成测试后取消设置环境变量(unset HADOOP_CONF_DIR
)。