【发布时间】:2017-02-14 10:23:40
【问题描述】:
我安装了hadoop 2.7,在core-site.xml和hdfs-site.xml中设置路径和配置如下:
core-site.xml
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://<ip_addr>:9000/</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/home/kavya/hdfs/data</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>/home/kavya/hdfs/name</value>
</property>
</configuration>
hdfs-site.xml:
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://<ip_addr>:9000/</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/home/kavya/hdfs/data</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>/home/kavya/hdfs/name</value>
</property>
</configuration>
我还使用 start-dfs.sh 启动了 hdfs。尽管在配置中提到了 IP 地址,但我收到连接被拒绝错误,例如:
Call From spark/<ip_addr> to localhost:8020 failed on connection exception: java.net.ConnectException:Connection refused
我使用以下方法将文件从我的 vm 存储到 hdfs:
hadoop fs -put /opt/TestLogs/traffic_log.log /usr/local/hadoop/TestLogs
这是我在 pyspark 中从 hdfs 读取文件然后提取字段的代码的一部分:
file = sc.textFile("hdfs://<ip_addr>/usr/local/hadoop/TestLogs/traffic_log.log")
result = file.filter(lambda x: len(x)>0)
result = result.map(lambda x: x.split("\n"))
print(result) # PythonRDD[2] at RDD at PythonRDD.scala
lines = result.map(func1).collect() #this is where I get the connection refused error.
print(lines)
func1 是包含正则表达式的函数,用于从我的日志中提取字段。然后将结果返回给lines。该程序在直接从 vm 读取文本文件时运行良好。
Spark 版本:spark-2.0.2-bin-hadoop2.7
虚拟机:CentOS
如何解决这个错误?我错过了什么吗?
【问题讨论】:
-
看起来你已经在 linux 机器上安装了 hadoop。几件事。您是否正确实施了 ssh?您是否格式化了您的名称节点并启动了所有服务?
-
是的 ssh 工作正常。我使用
start-dfs.sh格式化了namenode 并启动了服务。但仍然出现连接被拒绝错误。
标签: hadoop apache-spark hdfs pyspark