Scala 尝试从我的电脑访问远程HDFS群集
我正在尝试从本地pc(win7)访问远程cloudera HDFS群集。正如cricket_007在上一次演讲中所建议的那样,我做了以下几件事: 1) 我创建了下一个spark会话Scala 尝试从我的电脑访问远程HDFS群集,scala,apache-spark,hadoop,cloudera,Scala,Apache Spark,Hadoop,Cloudera,我正在尝试从本地pc(win7)访问远程cloudera HDFS群集。正如cricket_007在上一次演讲中所建议的那样,我做了以下几件事: 1) 我创建了下一个spark会话 val spark = SparkSession .builder() .appName("API") .config("spark.sql.warehouse.dir", "/user/hive/warehouse") .master("local") .enableHiveSupport() .getOrCr
val spark = SparkSession
.builder()
.appName("API")
.config("spark.sql.warehouse.dir", "/user/hive/warehouse")
.master("local")
.enableHiveSupport()
.getOrCreate()
2) 我从群集复制了下一个文件:
core-site.xml
hdfs-site.xml
hive-site.xml
mapred-site.xml
yarn-site.xml
并将变量HADOOP_CONF_DIR配置为包含它们的目录
3) 我下载了spark并配置了变量spark\u HOME和spark\u CONF\u DIR
4) 我下载了winutils并将其设置在path变量中。我将/tmp/hive的权限更改为777
当master设置为local时,我只看到默认数据库,这意味着它不能识别xml文件。当设置为“纱线”时,屏幕被卡住,看起来我的电脑正在思考,但这需要花费很多时间,而且没有结束。当我使用local时,我还使用了以下行:.config(“hive.metastore.uris”thrift://MyMaster:9083)
一切正常
知道为什么会这样吗?为什么本地只能看到默认数据库?为什么当主机设置为纱线时,我无法连接,它被卡住了?为什么当我添加配置行时,它只在局部解决了我的问题?AFAIK
HADOOP\u CONF\u DIR
被Spark launcher脚本(例如Spark shell
,Spark submit
)使用,它只是将该目录放在Java类路径的顶部,以便HADOOP库找到它们的配置。如果不使用脚本,可以自己应用类路径技巧,或者直接将文件转储到Spark conf dir中。每当Hadoop libs找不到任何conf文件时,它们会自动恢复为硬编码的默认值。这意味着,对于Hive,创建一个由本地Derby数据库支持的“沙盒”元存储。我猜您的工作目录包含一个derby.log
和一个metastore\u db
目录…我将xml文件放在SPARK\u CONF目录中,但它仍然无法识别文件,并且只有默认数据库可用。我检查了文件derbly.log和metasote目录,发现它加载了一个本地数据库。您是否将该目录插入了类路径中,例如在属性spark.driver.extraClassPath
中?spark\u CONF目录应该在我的类路径中?在项目目录中?