hadoop(3)

(1) Hdfs客户端API的操作

① 上传、移动、复制、查看

② 下载

1) Hadoop_home: windows中的环境变量中

③ 读取Hdfs上的数据

1) Open()

2) Seek(起始位置)

(2) 迭代器和集合

(3) Lgfj  + 自动收集和上传日志到hdfs

① 得到日志

② 待上传文件夹

1) Accesss.log.*

③ Hdfs上传我们的日志文件

1) Fs.copyFromLocal()

④ 转到备份文件夹:自动清理非当天的数据

1) renameTo()

2) DateSimpleDateFormat

手写WordCount

Mapper

1. 找见存放在HDFS上的数据

2. 参数:4

3.  按照偏移量读取内容

4. 开始读数据

5. 注意:如果起始偏移量不是从0开始,就抛弃一行数据

6. 按照wordhashcode取模,对每一个word进行分配

7. 代表真实处理的数据长度大于fileLen,相当于多读了一行

Reducer

1. 找见map阶段输出的数据

2. 不同的reduce处理不同的文件:

(1) 比如:reduce00 处理 map阶段输出的以0结尾的文件

3. 找一个中间mapword——countmap,存储计算的结果

(1) 相同的wordvalue + 1

4. 遍历map,然后输出结果文件到hdfs

(1) Word, count出现的总次数

创建数据

1. for i in {1..2000}; do  cat world.txt >> wc.txt; done

打包运行

1. 

2. 

3. 

4. 

5. 

6. 点击

(1) Build artificix

① 点击build

7. 

 

真实在集群上运行

1. 

(1) 错误的原因是因为:我们的jar运行所需要的hadoop环境jar包不完整

(2) 需要补全:

① 找见 /root/hadoop-2.8.3/share/hadoop 下的所有jar

② 拼凑1步骤需要的环境jar

1) find /root/hadoop-2.8.3/share/ -name "*.jar" | xargs | sed "s/ /:/g"

2) Hdpj=`find /root/hadoop-2.8.3/share/ -name "*.jar" | xargs | sed "s/ /:/g"`

③ java -cp 33thprj.jar:$hdpj com.scattle.study.day03.MyMapper /wordcount/input/wc.txt  0(起始偏移量)   134217728(剩余文件的长度)  0

④ java -cp 33thprj.jar:$hdpj com.scattle.study.day03.MyMapper /wordcount/input/wc.txt    134217728(起始偏移量)        106262606(剩余文件的长度)   1

⑤ 备注:

HDFS上传和读取详细流程

上传流程&读取流程

上传流程:请见:第三天:hdfs的详细上传流程图.png

读取流程:请见:第一天的数据读取流程图

HdfsCheckpoint机制

请见图:第三天;checkpoint机制的元数据处理的概念.png

MapReduce

1. 概念

(1) Map阶段

① 完成数据的加载,数据的清洗,数据的转换

② ETLextracttransformationload

(2) Reduce的阶段

① 分组

② 聚合、统计分析

(3) 实现有好多,MapReduce计算框架

2. 开发步骤

(1) 导包

① 

(2) 把他们添加到

① 

② Intellin 工具会自动更新,不需要干预

(3) 创建mr程序了

① map阶段

1) 

② Reduce阶段

1) 

(4) 创建job客户端操作

① code

猜你喜欢

转载自blog.csdn.net/a331685690/article/details/80552764
今日推荐