3.HDFS

1概述、设计目标

 

2命令行

hadoop常用命令:
hadoop fs -ls /
hadoop fs -put
hadoop fs -copyFromLocal
hadoop fs -moveFromLocal
hadoop fs -cat
hadoop fs -text
hadoop fs -get
hadoop fs -mkdir 
hadoop fs -mv  移动/改名
hadoop fs -getmerge
hadoop fs -rm
hadoop fs -rmdir
hadoop fs -rm -r

 

3文件存储机制

hadoop namenode的工作机制

HDFS存储扩展:
    put: 1file ==> 1...n block ==> 存放在不同的节点上的
    get: 去nn上查找这个file对应的元数据信息

 

4副本摆放策略

1-本rack的一个节点上

2-另外一个rack的节点上

3-与2相同的rack的另外一个节点上

1-本rack的一个节点上

2-本rack的另外一个节点上

3-不同rack的一个节点上

 

5HDFS读写数据流程

 

6checkpoint

 

 

#定义三大组件的名称 a.sources = r a.sinks = k1 k2 k3 a.channels = c1 c2 c3 #将数据流复制给所有channel a.sources.r.selector.type = replicating  # 配置Source组件 a.sources.r.type = exec #exec表示数据源来自运行给定的Unix命令后生成的数据 a.sources.r.command = cat /home/bit/ys/hngyzd.csv # kafka a.sinks.k1.type = org.apache.flume.sink.kafka.KafkaSink a.sinks.k1.kafka.topic = data a.sinks.k1.kafka.bootstrap.servers = localhost:9092 a.sinks.k1.kafka.flumeBatchSize = 20 a.sinks.k1.kafka.producer.acks = 1 a.sinks.k1.kafka.producer.linger.ms = 1 a.sinks.k1.kafka.producer.compression.type = snappy a.channels.c1.type = memory a.channels.c1.capacity = 100000 a.channels.c1.transactionCapacity = 100 # mysql a.sinks.k2.type =com.us.flume.MysqlSink a.sinks.k2.hostname=localhost a.sinks.k2.port=3306 a.sinks.k2.databaseName=ys a.sinks.k2.tableName=table1 a.sinks.k2.user=bit a.sinks.k2.password=123456 a.channels.c2.type = memory a.channels.c2.capacity = 100000 a.channels.c2.transactionCapactiy = 2000 # hdfs a.sinks.k3.type = hdfs a.sinks.k3.hdfs.path = hdfs://localhost:9000/user/bit/ys #积攒多少个Event才flush到HDFS一次 a.sinks.k3.hdfs.batchSize = 100 #设置文件类型,可支持压缩 a.sinks.k3.hdfs.fileType = DataStream #多久生成一个新的文件 a.sinks.k3.hdfs.rollInterval = 5 a.channels.c3.type = memory a.channels.c3.capacity =100000 a.channels.c3.transactionCapacity = 100 # Bind the source and sink to the channel a.sources.r.channels = c1 c2 c3 a.sinks.k1.channel = c1 a.sinks.k2.channel = c2 a.sinks.k3.channel = c3
05-23
这段代码是一个 Apache Flume 的配置文件,用于将数据从一个源头复制到多个目的地。其中,a.sources 定义了数据源,a.sinks 定义了数据的目的地,a.channels 定义了数据在传输过程中的缓存区。具体配置如下: - 数据源:a.sources.r.type = exec 表示数据源来自运行给定的 Unix 命令后生成的数据,a.sources.r.command = cat /home/bit/ys/hngyzd.csv 表示运行 cat 命令读取指定文件中的数据作为数据源。 - Kafka 目的地:a.sinks.k1.type = org.apache.flume.sink.kafka.KafkaSink 表示将数据发送到 Kafka,a.sinks.k1.kafka.bootstrap.servers = localhost:9092 表示连接到本地的 Kafka 服务器,a.sinks.k1.channel = c1 表示从名为 c1 的缓存区取出数据发送到 Kafka。 - MySQL 目的地:a.sinks.k2.type = com.us.flume.MysqlSink 表示将数据写入 MySQL 数据库,a.sinks.k2.hostname = localhost、a.sinks.k2.port = 3306、a.sinks.k2.databaseName = ys、a.sinks.k2.tableName = table1、a.sinks.k2.user = bit、a.sinks.k2.password = 123456 分别表示连接到本地的 MySQL 数据库 ys 中的 table1 表,并使用 bit 用户名和 123456 密码进行认证。a.sinks.k2.channel = c2 表示从名为 c2 的缓存区取出数据写入 MySQL。 - HDFS 目的地:a.sinks.k3.type = hdfs 表示将数据写入 HDFS,a.sinks.k3.hdfs.path = hdfs://localhost:9000/user/bit/ys 表示将数据写入到本地的 HDFS 文件系统中的 /user/bit/ys 目录下。a.sinks.k3.hdfs.batchSize = 100 表示积攒多少个事件才将它们一起 flush 到 HDFS 中,a.sinks.k3.hdfs.rollInterval = 5 表示每隔 5 秒生成一个新的文件。a.sinks.k3.channel = c3 表示从名为 c3 的缓存区取出数据写入 HDFS。 最后,a.sources.r.channels、a.sinks.k1.channel、a.sinks.k2.channel 和 a.sinks.k3.channel 分别将数据源和目的地绑定到缓存区 c1、c2 和 c3。这样,数据在传输过程中会先进入缓存区,再从缓存区分别发送到 Kafka、MySQL 和 HDFS 中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值