我已经像这样开始了Spark:
spark-shell --master local[10]
我正在尝试查看底层Hadoop安装上的文件。
我想做这样的事情:
hdfs ls
我该怎么做?
答案 0 :(得分:1)
只需从sys.process包导入类,就可以从scala(默认使用spark)执行任何底层系统/ OS命令(如hdfs dfs -ls甚至纯shell / DOS命令)。 见下面的例子
import sys.process._
val oldcksum = "cksum oldfile.txt" !!
val newcksum = "cksum newfile.txt" !!
val hdpFiles = "hdfs dfs -ls" !!
import sys.process._ # This will let underlying OS commands to be executed.
val oldhash = "certUtil -hashFile PATH_TO_FILE" !!#CertUtil is a windows command
如果您计划在Spark中读取和写入HDFS,则需要首先集成spark和hadoop。 http://spark.apache.org/docs/latest/configuration.html#inheriting-hadoop-cluster-configuration
答案 1 :(得分:0)
如果我正确理解你的问题,你想从shell执行HDFS命令。在我看来,运行火花工作可能没有帮助。
您需要先启动HDFS实例。以下是文档中的命令。启动HDFS后,您可以运行shell命令。
要启动Hadoop群集,您需要同时启动HDFS和 YARN集群。
首次启动HDFS时,必须对其进行格式化。格式化新的 分布式文件系统为hdfs:
[hdfs] $ $ HADOOP_PREFIX / bin / hdfs namenode -format Start HDFS NameNode在指定节点上使用以下命令 HDFS:
[hdfs] $ $ HADOOP_PREFIX / sbin / hadoop-daemon.sh --config $ HADOOP_CONF_DIR --script hdfs start namenode在每个指定节点上使用以下命令启动HDFS DataNode为hdfs:
[hdfs] $ $ HADOOP_PREFIX / sbin / hadoop-daemons.sh --config $ HADOOP_CONF_DIR --script hdfs start datanode if etc / hadoop / slaves and ssh信任访问已配置(请参阅单节点设置),所有 可以使用实用程序脚本启动HDFS进程。作为hdfs:
[hdfs] $ $ HADOOP_PREFIX / sbin / start-dfs.sh启动YARN 以下命令,在指定的ResourceManager上以yarn:
运行[yarn] $ $ HADOOP_YARN_HOME / sbin / yarn-daemon.sh --config $ HADOOP_CONF_DIR start resourcemanager运行脚本启动a 每个指定主机上的NodeManager为yarn:
[yarn] $ $ HADOOP_YARN_HOME / sbin / yarn-daemons.sh --config $ HADOOP_CONF_DIR start nodemanager启动独立的WebAppProxy 服务器。以纱线形式在WebAppProxy服务器上运行。如果是多个服务器 与负载平衡一起使用时,它应该在每个上运行:
[yarn] $ $ HADOOP_YARN_HOME / sbin / yarn-daemon.sh --config $ HADOOP_CONF_DIR启动代理服务器如果是etc / hadoop / slaves和ssh 所有YARN都配置了受信任的访问权限(请参阅单节点设置) 可以使用实用程序脚本启动进程。作为纱线:
[yarn] $ $ HADOOP_PREFIX / sbin / start-yarn.sh启动MapReduce JobHistory Server使用以下命令,在指定的上运行 server as mapred:
[mapred] $ $ HADOOP_PREFIX / sbin / mr-jobhistory-daemon.sh --config $ HADOOP_CONF_DIR启动历史服务器
第二种选择是程序化方式。您可以使用Hadoop中的FileSystem类(它是一个Java实现。)并执行hdfs操作。
以下是javadoc的链接。
https://hadoop.apache.org/docs/r2.7.3/api/org/apache/hadoop/fs/FileSystem.html
答案 2 :(得分:0)
您可以使用spark-shell上的命令查看HDFS的基础文件系统:
导入scala.sys.process._
val lsOutput = Seq(“ hdfs”,“ dfs”,“-ls”,“ / path / to / folder”)。!