初识Hadoop二,文件操作

1、使用hadoop命令查看hdfs下文件

[[email protected] hadoop-2.7.3]# hadoop fs -ls hdfs://192.168.36.134:9000/

开始在secureCRT上执行这条命令失败,使用netstat -nltp命令查看监听的9000端口,是127.0.0.1:9000,没有找到办法更改这个监听的IP和端口

后来就把etc/hadoop/core-site.xml配置下的localhost改为192.168.36.134,保存配置重启HDFS,使用上面命令还是不行,重启系统后再启动hdfs和yarn,再用上面命令就不报错了,命令执行后没有任何反应,那是因为没有在HDFS系统上存文件

2、上传文件到HDFS系统,例子中上传/home/jdk/jdk-8u73-linux-x64.tar.gz文件

[[email protected] jdk]# hadoop fs -put jdk-8u73-linux-x64.tar.gz hdfs://192.168.36.134:9000/

上传完成后再查看hdfs下文件hadoop fs -ls hdfs://192.168.36.134:9000/或hadoop fs -ls /

[[email protected] sbin]# hadoop fs -ls /
Found 1 items
-rw-r--r-- 1 root supergroup 181310701 2016-10-06 15:35 /jdk-8u73-linux-x64.tar.gz
[[email protected] sbin]#

这个上传的文件就被切割成块分别存放在datanode节点上了,由于都在同一台服务器上,那么文件被分的块在路径/home/hadoop/hadoop-2.7.3/tmp/dfs/data/current/BP-944456004-127.0.0.1-1475724779784/current/finalized/subdir0/subdir0下,分成两块大小分别为134217728和47092973

[[email protected] subdir0]# ll
total 178452
-rw-r--r--. 1 root root 134217728 Oct 6 15:35 blk_1073741825
-rw-r--r--. 1 root root 1048583 Oct 6 15:35 blk_1073741825_1001.meta
-rw-r--r--. 1 root root 47092973 Oct 6 15:35 blk_1073741826
-rw-r--r--. 1 root root 367923 Oct 6 15:35 blk_1073741826_1002.meta
[[email protected] subdir0]# pwd
/home/hadoop/hadoop-2.7.3/tmp/dfs/data/current/BP-944456004-127.0.0.1-1475724779784/current/finalized/subdir0/subdir0
[[email protected] subdir0]#

3、下载HDFS系统文件

hadoop fs -get hdfs://192.168.36.134:9000/jdk-8u73-linux-x64.tar.gz或hadoop fs -get /jdk-8u73-linux-x64.tar.gz

先用ll命令查看当前文件夹下不存在该文件,下载后再查看,该文件已被下载

[[email protected] ~]# ll
total 4
-rw-------. 1 root root 998 Sep 26 17:58 anaconda-ks.cfg
[[email protected] ~]# hadoop fs -get hdfs://192.168.36.134:9000/jdk-8u73-linux-x64.tar.gz
[[email protected] ~]# ll
total 177068
-rw-------. 1 root root 998 Sep 26 17:58 anaconda-ks.cfg
-rw-r--r--. 1 root root 181310701 Oct 6 17:24 jdk-8u73-linux-x64.tar.gz
[[email protected] ~]#

4、使用mapreduce算法统计单词数量,一般是在Java程序中使用的,这次就直接在hadoop安装目录下mapreduce下的Java例子中实验

  1)、首先切换到mapreduce路径下:cd /home/hadoop/hadoop-2.7.3/share/hadoop/mapreduce会看到 hadoop-mapreduce-examples-2.7.3.jar文件

  2)、新建一个测试文件,并填写测试数据:vi test.data 里面随便写入英文单词如,Youth is not a time of life; it is a state of mind; it is not a matter of rosy cheeks, red lips and supple knees; it is a matter of the will, a quality of the imagination, a vigor of the emotions; it is the freshness of the deep springs of life.保存后上传到HDFS系统中

  3)、在HDFS系统中新建文件夹存放测试数据:

[[email protected] mapreduce]# hadoop fs -mkdir /test
[[email protected] mapreduce]# hadoop fs -mkdir /test/testdata
[[email protected] mapreduce]# hadoop fs -put test.data /test/testdata

[[email protected] mapreduce]# hadoop fs -ls /
Found 2 items
-rw-r--r-- 1 root supergroup 181310701 2016-10-06 15:35 /jdk-8u73-linux-x64.tar.gz
drwxr-xr-x - root supergroup 0 2016-10-06 17:54 /test
[[email protected] mapreduce]#

  4)、执行单词统计操作,/test/output为输出路径

[[email protected] mapreduce]# hadoop jar hadoop-mapreduce-examples-2.7.3.jar wordcount /test/testdata /test/output

  5)、查看输出结果

[[email protected] mapreduce]# hadoop fs -ls /test/output
Found 2 items
-rw-r--r-- 1 root supergroup 0 2016-10-06 18:13 /test/output/_SUCCESS
-rw-r--r-- 1 root supergroup 223 2016-10-06 18:12 /test/output/part-r-00000
[[email protected] mapreduce]# hadoop fs -cat /test/output/part-r-00000

5、根据取样获取pi值,取样越多pi值越精确,下面以10X10为例

[[email protected] mapreduce]# hadoop jar hadoop-mapreduce-examples-2.7.3.jar pi 10 10

时间: 2024-10-08 04:38:54

初识Hadoop二,文件操作的相关文章

hadoop 读取文件操作

Path hdfsPath = new Path(args[0]); Configuration conf = new Configuration(); FileSystem fs = FileSystem.get(hdfsPath.toUri(),conf); CompressionCodecFactory factory = new CompressionCodecFactory(conf); CompressionCodec codec = factory.getCodec(hdfsPat

Hadoop学习笔记之二 文件操作

HDFS分布式文件系统:优点:支持超大文件存储.流式访问.一次写入多次读取.缺点:不适应大量小文件.不适应低时延的数据访问.不适应多用户访问任意修改文件. 1.hadoop用于大数据处理,在数据量较小时,并不适用于实时性强的任务,并不是所有的job放到hadoop上,性能都会提升. 2.大量小文件的情况下会极大的降低系统的性能,所以处理前需要先将少文件聚合成大文件,map的输出也应该首先combine在传输给reduce. 3.数据传输时的IO开销,存储在内存中还是硬盘中,节点之间共享数据的分发

hadoop基本文件操作

使用hadoop mapreduce已有些时日了,最近开始写一些自己的基础库.hadoop文件操作是必须的基本操作,使用文件操作命令往往比较繁琐,因此便写了一个简单的类.由于自己的基础库是根据自己的项目需求来写,因而并不完整.目前仅测试了最基本的上传.删除和下载操作,在后面的开发中会持续完善.现在共享出来给初学者作为参考,望大神不吝赐教. hadoop文件操作类及其测试类的百度云盘链接: http://pan.baidu.com/s/1c0g7CkC HadoopFile类的方法都会返回一个bo

初识函数及文件操作

1. 函数的基本作用 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发"更快更好更强..." 函数式编程最重要的是增强代码的重用性和可读性 2. 定义和使用 def 函数名(参数): ... 函数体 ... 返回值 函数的定义主要有如下要点: def:表示函数的关键字 函数名:函数的名称,日后根据函数名调用函数 函数体:函数中进行一系列的逻辑计算,如:发送邮件.计算出 [11,22,38,888,2]中的最大数等... 参数:

八.python文件操作

一,初识文件操作. 引子: 现在这个世界上,如果可以操作文件的所有软件都消失了,比如word,wps等等,此时你的朋友通过qq给你发过来一个文件,文件名是:美女模特空姐护士联系方式.txt,在座的所有男同学,那么你接受到这个文件之后,你的内心是否有一丝冲动,当然咱们不是那种闷骚的人,其实我们就是比较好奇,就是想要看看里面写的是什么,仅此而已,绝不联系.但是我说了所有可以操作文件的软件全部都没了,那么你是不是百爪挠心,火急火燎,哎呀.别急呀,你忘了么?你学过Python这门编程语言,这个语言肯定有

PHP核心编程--目录操作(包含文件操作)

一.目录操作 1.    创建目录 创建目录mkdir(目录名称)  //返回值为布尔 一次性创建主目录及其子目录 判断是不是一个目录is_dir  //返回true,false 判断目录或文件是否存在file_exists  //返回值为布尔 返回路径中的目录部分 dirname 2.    打开目录, opendir — 打开目录句柄 opendir(目录路径) //返回的是一个目录句柄. readdir(目标句柄)  //读取目录中的条目,  目录名为零的处理 //目录名中文的处理 ico

python学习笔记3:集合,文件操作,函数

一.集合 1. >>> s=set([1,2,3,4,5,6,6,6,])>>> s{1, 2, 3, 4, 5, 6} 集合可以理解为有键没有值的字典,键之间去重,无序. 2.集合操作: >>> s1={1,2,3,4,5,6,7}>>> s2={6,7,8,9,10,11}>>> s1&s2{6, 7}//交集>>> s1|s2{1, 2, 3, 4, 5, 6, 7, 8, 9, 10

python基础(集合,文件操作)

一.集合(set) 集合:1.无序的,不重复的 2.他里面的元素必须是可哈希的. int str bool () ,但是它本身是不可哈希的.   3.集合不能更改里面的元素   4.集合可以求交集,并集,差集,反交集等. 1.集合的创建 set1 = set({1,2,'alex'}) set2 = set1 print(set1,set2) # 输出结果:{1, 2, 'alex'} {1, 2, 'alex'} 2.集合的增(2种方式) 1.set1.add()(直接增加) set1 = {

深浅拷贝&文件操作

一.深浅拷贝 浅拷贝:拷贝第一层(顶级对象),或者说:父级对象 深拷贝:拷贝所有对象,顶级对象及其嵌套对象,或者说父级对象及其子对象 # 应该每次都拷贝一份(但由于小数据池,未拷贝) v1 = 'alex' import copy v2 = copy.copy(v1) print(id(v1),id(v2)) #同一地址 练习1 impot copy v1 = [1,2,3] v2 = copy.copy(v1) #浅拷贝 print(v1 == v2) # True print(v1 is v