当前位置:首页 » 文件传输 » hadoop命令上传文件
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

hadoop命令上传文件

发布时间: 2022-05-23 16:54:51

⑴ 我使用emaprece hadoop jar依赖的jar怎么上传

主要有4个方式:
1、把引用的所有的第三方jar包打到一个jar包内,形成一个超大包。
优点:简单,执行相对比较简单
缺点:一些版本升级较为麻烦,需要重新升级包
例如在maven可以添加以下配置项:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.4.2</version>
<configuration>
<shadedArtifactAttached>false</shadedArtifactAttached>
<outputFile>${project.build.directory}/shaded/examples-${project.version}-shaded.jar</outputFile>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>

2、把引用到所有第三方包放到Hadoop的lib目录下
优点:执行运行即可。
缺点:需要重新启动集群,不容易维护
不推荐
3、把引用到所有第三方包放到集群中固定的一台机器上,使用libjars命令加载第三方jar
优点:只需要维护hadoop集群中的一台机器上的lib库,易于系统的维护;
缺点:只能在存放jar的机器上去执行hadoop jar 命令执行程序,且执行命令较复杂;
个人对这种方式还可以接受,不过并不是我最喜欢的方式。
在这里,我进行了测试,WordCount的代码不变,打成WordCount_libjarscmd.jar,注意在打包的过程中不要选择lib中的jar文件,然后把OperateHDFS.jar放到集群中的一台机器上面,执行的命令如下所示:
hadoop jar WordCount_libjarscmd.jar com.hadoop.examples.WordCount -libjars OperateHDFS.jar input libjarscmdoutput

4、把jar包放在HDFS或者OSS上,动态加载第三方jar包
优点:程序可以方便的在集群上的任何一个节点运行,且执行命令的机器没有限制;
执行命令:
jar ossref://yourBucket/yourPath/wordcoun

⑵ 我用linux搭建hadoop集群,在本地我用eclipse向节点上传文件,请问上传的文件在节点的什么位置

你可以先刷新一下再看看,另外实在不行,可以用HDFS的命令,在你的线上的HDFS里找找,命令大概是hadoop fs -ls /(看根目录下的文件/文件夹,hadoop dfs -ls /也可以),这样你就可以看到当前的HDFS里的文件夹或者文件,再依次找找你看得见的路径。一般是可以看见的。

⑶ 在Hadoop中,使用put命令,在test中生成文件myfile,可以直接创建吗命令是什么呢

1. 创建本地的示例数据文件:
依次进入【Home】-【hadoop】-【hadoop-1.2.1】创建一个文件夹file用来存储本地原始数据。

并在这个目录下创建2个文件分别命名为【myTest1.txt】和【myTest2.txt】或者你想要的任何文件名。
分别在这2个文件中输入下列示例语句:

2. 在HDFS上创建输入文件夹
呼出终端,输入下面指令:
bin/hadoop fs -mkdir hdfsInput
执行这个命令时可能会提示类似安全的问题,如果提示了,请使用
bin/hadoop dfsadmin -safemode leave
来退出安全模式。
当分布式文件系统处于安全模式的情况下,文件系统中的内容不允许修改也不允许删除,直到安全模式结 束。安全模式主要是为了系统启动的时候检查各个DataNode上数据块的有效性,同时根据策略必要的复制或者删除部分数据块。运行期通过命令也可以进入 安全模式。

意思是在HDFS远程创建一个输入目录,我们以后的文件需要上载到这个目录里面才能执行。
3. 上传本地file中文件到集群的hdfsInput目录下
在终端依次输入下面指令:
cd hadoop-1.2.1
bin/hadoop fs -put file/myTest*.txt hdfsInput

4. 运行例子:
在终端输入下面指令:
bin/hadoop jar hadoop-examples-1.2.1.jar wordcount hdfsInput hdfsOutput
注意,这里的示例程序是1.2.1版本的,可能每个机器有所不一致,那么请用*通配符代替版本号
bin/hadoop jar hadoop-examples-*.jar wordcount hdfsInput hdfsOutput
应该出现下面结果:

Hadoop命令会启动一个JVM来运行这个MapRece程序,并自动获得Hadoop的配置,同时把类的路径(及其依赖关系)加入到Hadoop的库中。以上就是Hadoop Job的运行记录,从这里可以看到,这个Job被赋予了一个ID号:job_201202292213_0002,而且得知输入文件有两个(Total input paths to process : 2),同时还可以了解map的输入输出记录(record数及字节数)

⑷ 如何向 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
下载到本地

⑸ hadoop中命令经常含有-fs,-dfs,fs和dfs有什么区别作用是什么

You can see definitions of the two commands (hadoop fs & hadoop dfs) in
可以看一下hadoop的源代码

$HADOOP_HOME/bin/hadoop
...elif [ "$COMMAND" = "datanode" ] ; then CLASS='org.apache.hadoop.hdfs.server.datanode.DataNode' HADOOP_OPTS="$HADOOP_OPTS $HADOOP_DATANODE_OPTS"elif [ "$COMMAND" = "fs" ] ; then CLASS=org.apache.hadoop.fs.FsShell HADOOP_OPTS="$HADOOP_OPTS $HADOOP_CLIENT_OPTS"elif [ "$COMMAND" = "dfs" ] ; then CLASS=org.apache.hadoop.fs.FsShell HADOOP_OPTS="$HADOOP_OPTS $HADOOP_CLIENT_OPTS"elif [ "$COMMAND" = "dfsadmin" ] ; then CLASS=org.apache.hadoop.hdfs.tools.DFSAdmin HADOOP_OPTS="$HADOOP_OPTS $HADOOP_CLIENT_OPTS"...
So, they are exactly the same.
所以,发现两者是完全一样的功能。

谢谢

⑹ 如何远程上传文件到hadoop中

全用以下命令上传文件到Hadoop上:

hadoopfs-putlocal_file_name/user/hadoop/

其中,/user/hadoop/为HDFS上的路径。local_file_name为需要上传的文件名。

⑺ Hadoop中大文件上传后是否被分割存储在NDFS中

hdfs存储文件是按照块来的,hdfs的块大小默认是256M,可以自己设置,一个大文件会被切分成很多块存储到不同的地方,同时每个块也会备份多份。

⑻ 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使用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的权限问题。