通过Hadoop Shell命令进行导入导出操作
来源:互联网 发布:内存卡恢复数据软件 编辑:程序博客网 时间:2024/05/19 07:10
通过Hadoop Shell命令进行导入导出操作
HDFS提供了Shell命令来访问他的大多数功能。这些命令建立在HDFS FileSystem API的基础上。Hadoop提供的Shell脚本从命令行与Hadoop进行交互,这个Shell脚本叫做hadoop,通常位于$HADOOP_BIN目录,他是Hadoop的二进制文件目录。为了方便起见,$HADOOP_BIN通常被放在$PATH环境变量中。所有的Hadoop文件系统脚本的形式如下hadoop fs。
为了获得文件系统的所有命令,可以不加任何参数运行hadoop fs命令获得:
hadoop fs
或者从官方文档中获得:http://hadoop.apache.org/docs/r1.2.1/file_system_shell.html#ls
这些命令类型Unix Shell命令
例如:
[hadoop@Master bin]$ hadoop fs -help ls
-ls <path>: List the contents that match the specified file pattern. If
path is not specified, the contents of /user/<currentUser>
will be listed. Directory entries are of the form
dirName (full path) <dir>
and file entries are of the form
fileName(full path) <r n> size
where n is the number of replicas specified for the file
and size is the size of the file, in bytes.
在本节中,将使用Hadoop Shell脚本进行数据导入导出操作,这些命令常被用作导入特定的数据,加载处理过的数据,维护文件系统,浏览文件夹里的内容。了解这些命令有助于在HDFS中高效的工作。
1、准备工作
数据来源http://download.csdn.net/detail/sn_gis/7477233,位于\Chap 4\data\weblog_entries.txt
2、操作步骤
其中红色为本地目录中的文件,绿色为HDFS中目录
(3)在HDFS中列出weblog_entries.txt
hadoop fs -ls /data/weblogs/weblog_entries.txt
(4)以下的内容将HDFS中的内容拷贝到本地
hadoop fs -copyToLocal /data/weblogs/weblog_entries.txt /usr/localDataDirFromHDFS
3、工作原理
The Hadoop shell commands are a convenient wrapper around the HDFS FileSystem API.
Hadoop Shell实际上是HDFS FileSystem API的包装类来实现的。
4、了解更多
命令put类似于copyFromLocal,尽管put更通用,可以同时将多个文件拷贝到HDFS,同时可以从 标准输入流中读入数据。
命令get类似于copyToLocal。
当操作大数据集的时候,一个任务的输出将被分成一块或者多块。分成多少块由JobConf类的mapred.reduce.tasks属性控制,这个属性可以通过setNumReduceTasks() 方法设置。这个属性对于不同作业应该有不同的设置,因此,这个属性的设置应该是作业级别而不是集群级别。这个属性的默认值是1,这就意味着所有的马匹任务执行的结果将会发送给同一个reducer进行处理。一般情况下,除非处理的数据低于GB级别,要不默认值1不会被使用。设置reduce task的数目是一项功夫而不是科学。在JobConf的文档中推荐一下两个公式:
0.95 * NUMBER_OF_NODES * mapred.tasktracker.reduce.tasks.maximum
或者
1.75 * NUMBER_OF_NODES * mapred.tasktracker.reduce.tasks.maximum
例如,如果有10个 task tracker,mapred.tasktracker.reduce.tasks.maximum属性被设置为5,则按照第一个公式计算得:
0.95*10*5=47.5=47(48)。
在JobConf文档中指出:
系数取0.95时,当maps结束时,reducers能够立即启动,开始传输map的结果。
系数取1.75时,快的节点能够快速完成他们的第一轮reducers,进行他的第二轮reducer。
被分割的输出,在HDFS中,可以通过文件夹引用。一个作业可以读取文件的每一个部分当处理这些文件时。问题是get命令和copyToLocal命令只能操作文件。他们不能用于拷贝文件夹。通过一个一个的拷贝每一部分,然后在本地合并通常是很麻烦的,并且效率也不高。幸运的是,Hadoop Shell提供了getmerge命令来讲分布系统上的部分文件合并成单一的输出文件,并将其拷贝到本地文件系统中。
通过Pig脚本描述这一过程:
weblogs = load '/data/weblogs/weblog_entries.txt' as
(md5:chararray,
url:chararray,
date:chararray,
time:chararray,
ip:chararray);
通过LOAD命令将数据按行内存
md5_grp = group weblogs by md5 parallel 4;
通过md5值进行分组,并且设定mapred.reduce.tasks的值为4。
store md5_grp into '/data/weblogs/weblogs_md5_groups.bcp';
最终将数据存入/data/weblogs/weblogs_md5_groups.bcp中
/data/weblogs/weblogs_md5_groups.bcp实质上是文件夹
通过查看
grunt> ls hdfs://192.168.11.131:9000/data/weblogs/weblogs_md5_groups.bcp
hdfs://192.168.11.131:9000/data/weblogs/weblogs_md5_groups.bcp/_SUCCESS<r 1>0
hdfs://192.168.11.131:9000/data/weblogs/weblogs_md5_groups.bcp/part-r-00000<r 1>85435
hdfs://192.168.11.131:9000/data/weblogs/weblogs_md5_groups.bcp/part-r-00001<r 1>91250
hdfs://192.168.11.131:9000/data/weblogs/weblogs_md5_groups.bcp/part-r-00002<r 1>87771
hdfs://192.168.11.131:9000/data/weblogs/weblogs_md5_groups.bcp/part-r-00003<r 1>90129
可以看出,文件夹中包含part-r-00000,part-r-00001,part-r-00002,part-r-00003,还有/_SUCCESS。
可以通过getmerge命令将四个部分文件合并成一个文件,并拷贝到本地:
hadoop fs -getmerge /data/weblogs/weblogs_md5_groups.bcp /usr/localDataDirFromHDFS/merged.txt
通过vim /usr/localDataDirFromHDFS/merged.txt查看导出的文件
- 通过Hadoop Shell命令进行导入导出操作
- <Android>通过adb shell导入导出
- 1.2 使用Hadoop shell命令导入和导出数据到HDFS
- hadoop的shell命令操作
- 数据库的shell命令导入导出
- MySQL通过命令导入导出数据
- java操作excel进行导入导出 jxl
- java操作excel进行导入导出
- java jxl操作excel进行导入导出
- jxl操作excel进行批量导入 、导出
- 配置toad进行导入导出数据库操作
- oracle 操作cmd 进行导出 导入
- Hadoop hdfs Shell命令 HDFS操作命令
- 关于Linux下使用expdp和impdp命令对Oracle数据库进行导入和导出操作
- oracle 导入导出常用操作命令
- MySQL基本操作命令 导入导出
- oracle导入导出常用操作命令
- db2 导入导出命令操作步骤
- 用老项目来缅怀下逝去的青春
- redis php 实例
- 一维数组长度
- 转载的,java与AS3实现的聊天室
- “ error: file not found.” followed by “grub rescue> _ ” 解决
- 通过Hadoop Shell命令进行导入导出操作
- 刀塔传奇战斗系统分析
- c/c++关于随机数字问题
- PHP开发环境部署说明
- 关于TencentQQ互联
- 每日一个知识点7 2014/6/10
- Mac下MySQL卸载方法
- 配置上传文件大小限制
- 实验一 NPC问题——回溯算法、聚类分析