Ⅰ hadoop上传文件出错:java.io.IOException: Mkdirs failed to create /user/hadoop
不了解Hadoop,不过看错误是创建文件夹失败,最好检查下权限问题
Ⅱ 在hadoop中使用put上传文件失败
它说了文件不存在
这里hadoop没有关系,是你本地没有文件
你进到input里,输入pwd看看绝对路径是什么
Ⅲ Hadoop集群以外的机器如何访问Hadoop集群,进行提交文件,下载文件
集群以外的机器如何访问Hadoop集群,并像集群中提交作业和传送数据
(1)首先,在机器上安装nutch或者hadoop
(2)配置两个文件
hadoop-site.xml:
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://gc04vm12:9000</value>
<description> </description>
</property>
<property>
<name>mapred.job.tracker</name>
<value>gc04vm12:9001</value>
<description> </description>
</property>
</configuration>
(3)这样便能执行命令,查看集群状态,向集群提交作业
(4)hdfs中的用户
使用root登陆而hadoop中没有创建root用户时,使用如下命令时,查看到的就不是nutch用户主目录 /user/root了
[root@gc03vm12 nutch-1.0]# bin/hadoop dfs -ls 执行此命令时,即是列出/user/root(root用户主目录)目录下的文件或目录
ls: Cannot access .: No such file or directory. 没有此目录
[root@gc03vm12 nutch-1.0]# bin/hadoop dfs -ls /
Found 3 items
drwxr-xr-x - nutch supergroup 0 2010-05-21 00:42 /tmp
drwxr-xr-x - nutch supergroup 0 2010-05-21 00:53 /user
drwxr-xr-x - nutch supergroup 0 2010-05-21 00:55 /usr 这个是什么?
[root@gc03vm12 nutch-1.0]# bin/hadoop dfs -mkdir x 主目录(/user/root)中创建x目录,提示以下信息
mkdir: org.apache.hadoop.security.AccessControlException: Permission denied: user=root, access=WRITE, inode="user":nutch:supergroup:rwxr-xr-x
这是因为root用户对/user/目录没有写权限(drwxr-xr-x - nutch supergroup 0 2010-05-21 00:53 /user)
hdfs中的nutch用户是启动hadoop集群的这个用户,当客户机中也存在nutch用户时,登陆后访问hdfs时,进入的是home目录(/user/nutch)。
hdfs中文件和目录的权限类似linux,可以修改其权限,改变其所属组
nutch用户格式化namenode,启动hadoop集群(会用到nutch用户的公钥信息,ssh配置)后,执行命令,
[nutch@gc03vm12 nutch-1.0]# bin/hadoop dfs -ls 执行此命令时,即是列出/user/nutch(nutch用户主目录)目录下的文件或目录
ls: Cannot access .: No such file or directory.
因为没有/user/nutch目录,所以不能访问,而此时若创建一个文件,如使用以下命令
[nutch@gc03vm12 nutch-1.0]# bin/hadoop dfs -mkdir x 则可以顺利执行,此时它将创建/user/nutch/x目录。
而使用root用户不行,是因为 root用户对/user/目录没有写权限。
那么如何创建一个root用户呢,可以这样做
超级用户nutch在hdfs中创建目录/user/root,即 bin/hadoop dfs -mkdir /user/root
更改/user/root目录所属用户和组, bin/hadoop dfs -chown -R root:root /user/root (若此处没有指定组,则默认root属于supergroup组, bin/hadoop dfs -chown -R root /user/root)
这样就相当于在hdfs中创建了用户root,组root;
用户权限和Linux类似,nutch是超级用户。
例如nutch在root的home目录下创建目录s,则s的权限如下,属于nutch,组是root
drwxr-xr-x - nutch root 0 2010-05-21 04:41 /user/root/s
root用户此时就不能写s目录了
[root@gc04vm14 nutch-1.0]# bin/hadoop dfs -mkdir s/x
mkdir: org.apache.hadoop.security.AccessControlException: Permission denied: user=root, access=WRITE, inode="s":nutch:root:rwxr-xr-x
root用户属于root组,并且执行作业,会提示错误,如下
[root@gc03vm12 nutch-1.0]# bin/nutch crawl /user/nutch/urls -dir data2 -depth 5 -topN 8
提示如下错误
org.apache.hadoop.security.AccessControlException: org.apache.hadoop.security.AccessControlException: Permission denied: user=root, access=WRITE, inode="tmp":nutch:supergroup:rwxr-xr-x
这是因为root用户对/tmp目录(hdfs目录)没有写权限,因为作业执行时,会在/tmp目录下生成相应的job文件,
/tmp的权限如下:
drwxr-xr-x - nutch supergroup 0 2010-05-21 00:42 /tmp
因此非超级用户提交作业时,用户问题是一个很麻烦的问题
注:
hadoop有些命令只能在namenode上执行
Ⅳ hadoop实验如果上传的是130M的文件,会放在几个块中
这个要看你用的hadoop版本,要是没记错2.7.2之前默认一个块是64MB,同时默认副本是3个,所以130M会存放在9个块中,如果是2.7.2之后,默认一个块是128MB,默认副本数依然是3个,所以130M会放在6个块中。可以看到hdfs上最害怕的就是存放小文件,会很浪费空间,1k的文件也会占用一个块。
Ⅳ 如何远程上传文件到hadoop中
全用以下命令上传文件到Hadoop上:
hadoop
fs
-put
local_file_name
/user/hadoop/其中,/user/hadoop/为HDFS上的路径。local_file_name为需要上传的文件名。
Ⅵ 我用linux搭建hadoop集群,在本地我用eclipse向节点上传文件,请问上传的文件在节点的什么位置
你可以先刷新一下再看看,另外实在不行,可以用HDFS的命令,在你的线上的HDFS里找找,命令大概是hadoop fs -ls /(看根目录下的文件/文件夹,hadoop dfs -ls /也可以),这样你就可以看到当前的HDFS里的文件夹或者文件,再依次找找你看得见的路径。一般是可以看见的。
Ⅶ hadoop单词统计上传不了
原因可能是在我启动dfs和yarn服务之后由于我经常格式化导致的,致使我的slave01和slave02里面的hadoop/hdfs/data/current/VERSION文件里的clusterID与master中不一致,并且输入jps命令,我的slave01和slave02的datanode未启动的。解决办法:将slave01和slave02里的hadoop/hdfs/data这个文件夹删掉,然后新建一个data文件,再在bin路径下格式化一下,最后重启dfs和yarn服务即可。
Ⅷ hadoop使用put上传文件出错
先看看 /user/xxx目录的权限:drwxr-xr-x - hdfs supergroup 表示它属于hdfs用户,组名为 supergroup
因此需要使用 sudo -u hdfs hadoop fs -put localfile /user/xxx 来指定使用 hdfs 用户来执行上传命令。参考
当高兴地执行sudo -u hdfs hadoop fs -put localfile /user/xxx 以为能成功上传时,又报错:
put: localfile No such file or directory 说找不到本地文件localfile,可是用 ls 明明 能看到 localfile ,后来在一篇文章(参考)中发现发来是lcoalfile的权限问题。
Ⅸ 如何向 hadoop 导入数据
1.2
使用Hadoop
shell命令导入和导出数据到HDFS
实验准备
实例需要用到的数据-weblog_entries.txt
在namenode创建2个文件夹用来存放实验用的数据
mkdir
/home/data
1
mkdir
/home/data_download1
将weblog_entries.txt上传到namenode里的/home/data文件夹(我使用SecureFXPortable.exe
工具)
注:以下命令都是在namenode节点运行的
实验过程
1.在HDFS中创建一个新的文件夹,用于保存weblog_entries.txt
hadoop
fs
-mkdir
/data/weblogs1
2.将weblog_entries.txt文件从本地文件系统复制到HDFS刚创建的新文件夹下
cd
/home/data1
hadoop
fs
-FromLocal
weblog_entries.txt
/data/weblogs1
3.列出HDFS上weblog_entries.txt文件的信息:
hadoop
fs
–ls
/data/weblogs/weblog_entries.txt
1
4.将HDFS上的weblog_entries.txt文件复制到本地系统的当前文件夹下
cd
/home/data_download1
hadoop
fs
-ToLocal
/data/weblogs/weblog_entries.txt
./weblog_entries.txt
1
最后用
ls
命令检验下时候将weblog_entries.txt
下载到本地