hadoop课堂笔记_有点乱

hdfs dfs
-cat 查看文件内容
-ls -R 递归查看文件夹下所有文件目录
-put 上传
-get 下载
-rm -r 删除
-chmod -R 修改权限
-mv 移动
-tail 从后面开始读
java 客户端
maven 创建项目
添加依赖
//创建默认配置文件系统对象
Configuration con = new Configuration();
//分布式文件系统
FileSystem fs = FileSystem.newInstance(new URI(“hdfs://linux03:8020”), con, “root”);
fs.copyFromLocal 从本地上传
fs.copyToLocal 下载到本地
fs.exist(path) 判断是否存在
fs.ListFlies(path) 查看当前文件夹下所有文件 后面还有一个参数true递归查看
fa.ListStatus(path) 查看当前文件夹下所有文件包括文件夹
fs.open 打开一个路径获得输入流开始读东西
fs.create 写东西
fa.append 追加
fs.rename 改名字或者移动
fa.delete(path,true) 删除

	namenode初始化/opt/hdpdata/name/current和从节点建立连接的过程叫做初始化
	FsImage  管理数据
edits  日志文件,用户操作行为
fsimage  元数据镜像文件
cat VERSION  看这个目录里面的version内容

集群ID
blockpoolID 数据块存储池ID
主节点初始化之后会生成每个子节点都一样的blockpoolID 以后存储数据块都以这个
为文件夹存储
集群ID也是一样的说明他们同属于一个集群
datanodeuuID 这个是每个都不同的是唯一标识 主节点在集群中识别机器用的
当datanode注册时,获取集群id和数据块存池id作为集群成员的唯一标记
数据快存储池id作为存储数据物理块的顶层目录
集群子节点生成uuid 集群角色的唯一标识
数据在集群中存储的时候根据用户的设置可以存储n个副本,指定数据存储物理块大小

datanode 向namenode请求注册nemenode向datanode返回blockpoolID和datanodeID代表这个
datanode就是他的成员他也会生成uuid作为子成员的唯一标识,子节点会3秒发送一次心跳
给主节点汇报正常工作状态和的回报数据块,如果集群中的数据块的副本少了主节点会维护
集群中副本的个数发送复制副本的任务,某一个子节点个会领取复制副本的任务去复制,
当10次没发送心跳,主节点会发送任务5分钟后悔pin一下子节点的网络pin联系都不通会剔除
节点,
--------------------------------写数据,上传数据流程
1客户端上传数据指定副本和块的大小put发送请求给主节点,2主节点接受请求并且校验能否存
下文件,在相应给客户端ok,3客户端向主节点请求上传第一个 切块,4主节点返回3台机器名
5客户端向这三台机器建立连接通道,6三台机器一次响应ok表示连接成功可以接收数据,
7客户端本地流读数据在网络输出流封装成数据包的形式发送给子节点,子节点用网络输入流古
数据在用本地输出流保存到磁盘里子节点多线程向其他节点发送数据,8最后三台机器相应
ok,只要有一个成功就算成功
-------------------------------------------下载到本地
客户端向主节点发送下载请求,主节点响应向客户端发送元数据,客户端解析通过blockpoolID
的唯一ID解析域名找到数据块存储的位置,请求某一个子节点下载在依次请求下载后面的数据块
拼接到一起
-----------------------------------------------元数据管理机制
FsImage在内存中会持久化到磁盘里后续的客户操作会生成edits日志定期的(1h)将持久化数据
和edits日志合并在secondary namenode里面操作,它会将主节点的持久化对象
和日志文件拷过来反序列化再合并再持久化到磁盘,再返回到主节点,主节点会过
一段时间将日志和老得持久化删除释放空间(这个机制叫做checkpoint 1h一次)
1将用户操作的元数据记录在FsIamge内存对象中,内存数据会丢失
2定期将内存数据持久化到粗盘,时间间隔的范围内会造成数据丢失
3有日志机制记录这段时间范围的用户操作
4还需要定期的将日志数据和持久化好的镜像文件合并
5主节点的FsImage正常存储集群中所有的元数据,内存有限,整个集群无法扩容不建议存大量小文件
------------------------------------------------------------HDFS
namenode
1)初始化集群
2)接受datanode的注册 -->集群ID 数据存储目录
3)维护datanode的节点列表,对外提供存储空间
4)接受客户端的读写请求
5)对外提供虚拟的访问目录
6)维护管理元数据
7)接受datanode的心跳汇报,维护集群,接受数据汇报
8)维护数据安全存储(副本个数的检验和复制)
datanode
1)注册 为集群提供存储资源
2)发送心跳 回报存储情况
3)执行数据块复制工作,负载均衡
4)处理数据的读写请求
--------------------------------------------------------------yarn上运行MR程序代码
public class WordCountDriver {
public static void main(String[] args) throws Exception {
// 1 配置对象
System.setProperty(“HADOOP_USER_NAME”, “root”);
Configuration conf = new Configuration();
// 设置访问文件系统
conf.set(“fs.defaultFS”, “hdfs://linux01:9000”);
// 设置MR程序运行模式 yarn
conf.set(“mapreduce.framework.name”, “yarn”);
// yarn的resourcemanager的位置
conf.set(“yarn.resourcemanager.hostname”, “linux01”);
// 设置MapReduce程序运行在windows上的跨平台参数
conf.set(“mapreduce.app-submission.cross-platform”,“true”);
// 2 创建任务对象
Job job = Job.getInstance(conf, “wc”);
job.setJar(“C:\Users\ThinkPad\Desktop\demo.jar”);
job.setJarByClass(WordCountDriver.class);
// 2.1 设置 map和reduce任务类
job.setMapperClass(WordCountMapper.class);
job.setReducerClass(WordCountReducer.class);
//2.2 设置map和reduce 的输出KV
job.setMapOutputKeyClass(Text.class);
job.setMapOutputValueClass(IntWritable.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);
// 2.3 设置reduce的个数 默认1
job.setNumReduceTasks(2);
// 2.3 设置输入和输出路径
FileInputFormat.setInputPaths(job,new Path("/data/wc/"));
FileOutputFormat.setOutputPath(job,new Path("/data/wc_res"));
// 3 提交任务 等待程序执行完毕 返回值是否成功
boolean b = job.waitForCompletion(true);
System.exit(b?0:-1);
}
}
yarn 上的两个角色 recourcemanage nodemanage
-------------------------------------------------zookepper
zkServer.sh start 在每台机器上都启动
zkCli.sh -server 2181 链接任意机器
ls
ls2 查看详细的
get
set 修改
create -e -s (-e零时的)(-s 有序的)
rmr 删除相当于递归删除
都要有绝对路径
不能创建多级节点
watch 监听 只能监听一次
在java上
getChildren 遍历某个节点所有子节点
getdata 获取节点里面的内容 别的参数null
setdata 更新数据 参数2里写新值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值