Chcę uzyskać dostęp HDFS w pełni kwalifikowanych nazw, takich jak:Znajdź numer portu, gdzie HDFS nasłuchuje
hadoop fs -ls hdfs://machine-name:8020/user
mogę też po prostu dostęp HDFS z
hadoop fs -ls /user
Jednak piszę przypadków testowych to powinno działać na różnych dystrybucjach (HDP, Cloudera, MapR ... itd.), co wiąże się z dostępem do plików hdfs z kwalifikowanymi nazwami.
Rozumiem, że hdfs://machine-name:8020
jest zdefiniowany w core-site.xml jako fs.default.name
. Ale wydaje się, że jest inaczej w różnych dystrybucjach. Na przykład, hdfs jest maprfs na MapR. IBM BigInsights nie ma nawet core-site.xml
w $HADOOP_HOME/conf
.
Wygląda na to, że hadoop nie mówi mi, co jest zdefiniowane w fs.default.name
z opcjami wiersza poleceń.
Jak mogę niezawodnie uzyskać wartość zdefiniowaną w fs.default.name
z wiersza poleceń?
Test zawsze będzie wykonywany na podstawie nazwy, więc nazwa maszyny jest łatwa. Ale uzyskanie numeru portu (8020) jest nieco trudne. Próbowałem lsof, netstat .. ale nadal nie mogłem znaleźć wiarygodnego sposobu.
linia użytkowych komenda „HDFS” nie jest dostępna w wersji wcześniejszej Hadoop? – ernesto
Komenda hdfs wprowadzona do hadoop od 2.X, tego polecenia nie ma w 1.X, Możesz wypróbować drugą opcję w tym przypadku: – sachin
Użyj hasoop conf -key fs.default.name dla wersji 2.x. –