HDFS文件上传:8020端口拒绝连接问题解决!
CopyFromLocal: Call to localhost/127.0.0.1:8020 failed on connection exception: java.net.ConnectException
问题提示本机的8020端口无法连接。
网络上面找到一篇文章是将core-site.xml里面的配置端口修改成8020,但是我们现在依然用他默认的9000端口,只需要在配置eclipse的时候端口修改为9000就可以了。
我的问题到此结束,不过他还在下面写了一点其他问题就粘帖下来,做以后查寻备用。
来源:http://www.csdn123.com/html/itweb/20130801/34361_34373_34414.htm
Hadoop的关键配置文件
hdfs上传文件成功之后,自己又开始好奇地修改其配置文件。因为之前自己对于hadoop一直都是胡打乱撞,缺乏系统的理解和认识,在网上查到了一个篇hadoop配置文件的资料,于是就开始动起手来,不想出现了新的错误。首先来梳理下hadoop的配置文件:
1. hadoop-env.sh
hadoop的运行环境配置,主要设置HADOOP_HOME和JAVA_HOME两个环境变量,指定其所在路径即可
2. core-site.xml
注意fs.default.name属性要正确配置,该属性用于配置namenode节点,我们都知道一个hadoop系统中一般只有一个namenode节点管理所有的datanode,所以设置一定要正确:hdfs://localhost:8020。一般默认都是9000端口,但是我自己的ubuntu并不能正常运行,所以才修改为8020。8020端口是hadoop的namenode的RPC调用端口。
3. hdfs-site.xml
dfs.replication属性,顾名思义表示指定的hadoop文件块的备份数量,一般默认是3份,可以设为1
dfs.name.dir属性,非常重要,用来设置存放namenode数据的目录,如果这个目录访问失败,则会导致namenode启动失败
dfs.data.dir属性,用来指定datanode上本地存放数据的目录,与namenode的设置独立没有关系
4. mapred-site.xml
mapred.jop.tracker属性用来设置JobTracker的主机、IP地址和端口,本机的话可以设置为:localhost:9001
Hbase系统的配置文件主要需要注意以下几个:
1. hbase-env.sh
设置环境变量,要export Java路径,最后一行有个属性HBASE_MANAGES_ZK设为true表示启用自带的ZK,否则运行时会提示打开ZK错误,到时也可以使用apt-get单独的zookeeper运行。
2. hbase-site.xml
hbase.rootdir属性设置region server的共享目录,默认写到tmp中,不改写的话重启后数据会丢失,我的设为了hdfs://localhost:8020/hbase
zookeeper.znode.parent表示Hbase的跟ZNODE,一般默认为/hbase
在修改完配置文件后,启动hadoop时发现namenode无法启动,使用hadoop namenode -format也不能成功:
其中提示"Cannot create directory /hdfs/name/current"。一般出现这个错误有两个原因,一个是路径设置的有错误,另一个原因则更有可能是因为权限问题。自己的在指定namenode的存放路径时使用了"~"用来表示主目录,但是事实证明是行不通的,必须使用绝对路径,自己的修改为/home/hadoop/hdfs/;然后确保home的属性是775,而hadoop的属性是775即可。
这里的hadoop fs -ls [directory]可以列出目录内容,hadoop fs -lsr则可以递归列出目录的子目录。-mkdir和-rmr分别用来创建和删除目录。之后我们可以使用hadoop fs -puts src hdfs://localhost:8020/user/hadoop/img中拷贝自己的IMG文件和JSON文件。
这里还有一段小插曲,自己在解决namenode文件创建失败问题时,找到了hadoop默认的存放namenode和data的目录,在/tmp/hadoop-hadoop下,当然,设置dfs.name.dir后便存放到指定的目录了。HDFS文件存放在实际的节点本地系统中,但是使用特殊的编码方式,有着自己的文件系统树结构,因此一般不能用cd命令进入查看。上传文件就是将自己的文件添加进HDFS的树中。
由于配置时经常需要修改文件,不晓得什么时候不小心就导致配置错误,因此经常备份是个好习惯,可以使用ubuntu的tar命令来实现备份,生成backup.tgz后放在/下:
tar -cvpzf backup.tgz --exclude=/proc --exclude=/backup.tgz --exclude=/lost+found --exclude=/mnt --exclude=/sys /