大数据学习——高可用配置案例

(一)、failover故障转移

在完成单点的Flume NG搭建后,下面我们搭建一个高可用的Flume NG集群,架构图如下所示:

(1)节点分配

Flume的Agent和Collector分布如下表所示:


名称


Ip地址


Host


角色


Agent1


192.168.200.101


Itcast01


WebServer


Collector1


192.168.200.102


Itcast02


AgentMstr1


Collector2


192.168.200.103


Itcast03


AgentMstr2

Agent1数据分别流入到Collector1和Collector2,Flume NG本身提供了Failover机制,可以自动切换和恢复。下面我们开发配置Flume NG集群。

(2)配置

在下面单点Flume中,基本配置都完成了,我们只需要新添加两个配置文件,它们是flume-client.conf和flume-server.conf,其配置内容如下所示:

1、itcast01上的flume-client.conf配置


#agent1 name

agent1.channels = c1

agent1.sources = r1

agent1.sinks = k1 k2

#set gruop

agent1.sinkgroups = g1

#set sink group

agent1.sinkgroups.g1.sinks = k1 k2

#set channel

agent1.channels.c1.type = memory

agent1.channels.c1.capacity = 1000

agent1.channels.c1.transactionCapacity = 100

agent1.sources.r1.channels = c1

agent1.sources.r1.type = exec

agent1.sources.r1.command = tail -F /root/log/test.log

agent1.sources.r1.interceptors = i1 i2

agent1.sources.r1.interceptors.i1.type = static

agent1.sources.r1.interceptors.i1.key = Type

agent1.sources.r1.interceptors.i1.value = LOGIN

agent1.sources.r1.interceptors.i2.type = timestamp

# set sink1

agent1.sinks.k1.channel = c1

agent1.sinks.k1.type = avro

agent1.sinks.k1.hostname = itcast02

agent1.sinks.k1.port = 52020

# set sink2

agent1.sinks.k2.channel = c1

agent1.sinks.k2.type = avro

agent1.sinks.k2.hostname = itcast03

agent1.sinks.k2.port = 52020

#set failover

agent1.sinkgroups.g1.processor.type = failover

agent1.sinkgroups.g1.processor.priority.k1 = 10

agent1.sinkgroups.g1.processor.priority.k2 = 5

agent1.sinkgroups.g1.processor.maxpenalty = 10000

#这里首先要申明一个sinkgroups,然后再设置2个sink ,k1与k2,其中2个优先级是10和5,#而processor的maxpenalty被设置为10秒,默认是30秒。‘

启动命令:


bin/flume-ng agent -n agent1 -c conf -f conf/flume-client.conf

-Dflume.root.logger=DEBUG,console

2、Itcast02和itcast03上的flume-server.conf配置


#set Agent name

a1.sources = r1

a1.channels = c1

a1.sinks = k1

#set channel

a1.channels.c1.type = memory

a1.channels.c1.capacity = 1000

a1.channels.c1.transactionCapacity = 100

# other node,nna to nns

a1.sources.r1.type = avro

a1.sources.r1.bind = 0.0.0.0

a1.sources.r1.port = 52020

a1.sources.r1.channels = c1

a1.sources.r1.interceptors = i1 i2

a1.sources.r1.interceptors.i1.type = timestamp

a1.sources.r1.interceptors.i2.type = host

a1.sources.r1.interceptors.i2.hostHeader=hostname

#set sink to hdfs

a1.sinks.k1.type=hdfs

a1.sinks.k1.hdfs.path=/data/flume/logs/%{hostname}

a1.sinks.k1.hdfs.filePrefix=%Y-%m-%d

a1.sinks.k1.hdfs.fileType=DataStream

a1.sinks.k1.hdfs.writeFormat=TEXT

a1.sinks.k1.hdfs.rollInterval=10

a1.sinks.k1.channel=c1

启动命令:


bin/flume-ng agent -n agent1 -c conf -f conf/flume-server.conf

-Dflume.root.logger=DEBUG,console

(3)测试failover

1、先在itcast02和itcast03上启动脚本


bin/flume-ng agent -n a1 -c conf -f conf/flume-server.conf

-Dflume.root.logger=DEBUG,console

2、然后启动itcast01上的脚本


bin/flume-ng agent -n agent1 -c conf -f conf/flume-client.conf

-Dflume.root.logger=DEBUG,console

3、Shell脚本生成数据


while true;do date >> test.log; sleep 1s ;done

4、观察HDFS上生成的数据目录。只观察到itcast02在接受数据

5、Itcast02上的agent被干掉之后,继续观察HDFS上生成的数据目录,itcast03对应的ip目录出现,此时数据收集切换到itcast03上

6、Itcast02上的agent重启后,继续观察HDFS上生成的数据目录。此时数据收集切换到itcast02上,又开始继续工作!

(二)、load balance负载均衡

(1)节点分配

如failover故障转移的节点分配

(2)配置

在failover故障转移的配置上稍作修改

itcast01上的flume-client-loadbalance.conf配置


#agent1 name

agent1.channels = c1

agent1.sources = r1

agent1.sinks = k1 k2

#set gruop

agent1.sinkgroups = g1

#set channel

agent1.channels.c1.type = memory

agent1.channels.c1.capacity = 1000

agent1.channels.c1.transactionCapacity = 100

agent1.sources.r1.channels = c1

agent1.sources.r1.type = exec

agent1.sources.r1.command = tail -F /root/log/test.log

# set sink1

agent1.sinks.k1.channel = c1

agent1.sinks.k1.type = avro

agent1.sinks.k1.hostname = itcast02

agent1.sinks.k1.port = 52020

# set sink2

agent1.sinks.k2.channel = c1

agent1.sinks.k2.type = avro

agent1.sinks.k2.hostname = itcast03

agent1.sinks.k2.port = 52020

#set sink group

agent1.sinkgroups.g1.sinks = k1 k2

#set load-balance

agent1.sinkgroups.g1.processor.type = load_balance

# 默认是round_robin,还可以选择random

agent1.sinkgroups.g1.processor.selector = round_robin

#如果backoff被开启,则 sink processor会屏蔽故障的sink

agent1.sinkgroups.g1.processor.backoff = true

Itcast02和itcast03上的flume-server-loadbalance.conf配置


#set Agent name

a1.sources = r1

a1.channels = c1

a1.sinks = k1

#set channel

a1.channels.c1.type = memory

a1.channels.c1.capacity = 1000

a1.channels.c1.transactionCapacity = 100

# other node,nna to nns

a1.sources.r1.type = avro

a1.sources.r1.bind = 0.0.0.0

a1.sources.r1.port = 52020

a1.sources.r1.channels = c1

a1.sources.r1.interceptors = i1 i2

a1.sources.r1.interceptors.i1.type = timestamp

a1.sources.r1.interceptors.i2.type = host

a1.sources.r1.interceptors.i2.hostHeader=hostname

a1.sources.r1.interceptors.i2.useIP=false

#set sink to hdfs

a1.sinks.k1.type=hdfs

a1.sinks.k1.hdfs.path=/data/flume/loadbalance/%{hostname}

a1.sinks.k1.hdfs.fileType=DataStream

a1.sinks.k1.hdfs.writeFormat=TEXT

a1.sinks.k1.hdfs.rollInterval=10

a1.sinks.k1.channel=c1

a1.sinks.k1.hdfs.filePrefix=%Y-%m-%d

(3)测试load balance

1、先在itcast02和itcast03上启动脚本


bin/flume-ng agent -n a1 -c conf -f conf/flume-server-loadbalance.conf

-Dflume.root.logger=DEBUG,console

2、然后启动itcast01上的脚本


bin/flume-ng agent -n agent1 -c conf -f conf/flume-client-loadbalance.conf

-Dflume.root.logger=DEBUG,console

3、Shell脚本生成数据


while true;do date >> test.log; sleep 1s ;done

4、观察HDFS上生成的数据目录,由于轮训机制都会收集到数据

5、Itcast02上的agent被干掉之后,itcast02上不在产生数据

6、Itcast02上的agent重新启动后,两者都可以接受到数据

原文地址:https://www.cnblogs.com/feifeicui/p/10306546.html

时间: 2024-10-13 22:30:17

大数据学习——高可用配置案例的相关文章

大型技术网站的技术( 高并发、大数据、高可用、分布式....)(一)

面对高并发.大流量.高可用.海量数据.用户分布广泛.网络情况复杂这类网站系统我们如何应对??? 第一阶段   一台服务器不行就上多台服务器    1.应用程序与数据服务分离        将应用程序.数据库.文件等资源放在一台服务器上,面对海量用户的访问只可能是崩崩崩的挂掉. so? 我们知道的是应用服务器.数据库服务器.文件服务器这三块对服务器的要求是不同的,应用服务器就需要大大的CPU来处理复杂的业务逻辑,数据库服务器需要快速磁盘检索      和 数据缓存也就是要大内存,而文件服务器要求的

大数据学习之MapReduce编程案例一单词计数 10

一:单词计数 1:单词计数总流程图 2:代码实现 1:Map阶段 package it.dawn.YARNPra.wc_hdfs; import java.io.IOException; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Mapp

大数据 Hadoop 高可用HA(Journal,ZooKeeper)

NN1 NN2 DN ZK ZKFC JNNNODE01   * * *NODE02   * * * * *NODE03 * *   *NODE04 * * 1.首先让两个NameNode能互相免密钥,在前一部分中node01已经能免密登陆node02了,所以再让node02免密登陆自己和node01就行 [[email protected] .ssh]# ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa [[email protected] .ssh]# cat

好程序员大数据学习路线分享Hadoop阶段的高可用配置

大数据学习路线分享Hadoop阶段的高可用配置,什么是Hadoop的HA机制 Ha机制即Hadoop的高可用(7*24小时不中断服务) 正式引入HA机制是从hadoop2.0开始,之前的版本中没有HA机制 hadoop-ha严格来说应该分成各个组件的HA机制--HDFS的HA.YARN的HA HDFS的HA机制详解HDFS 的HA主要是通过双namenode协调工作实现 双namenode协调工作的要点:A.元数据管理方式需要改变: 内存中各自保存一份元数据 Edits日志只能有一份,只有Act

好程序员大数据学习路线分享高阶函数

好程序员大数据学习路线分享高阶函数,我们通常将可以做为参数传递到方法中的表达式叫做函数 高阶函数包含:作为值的函数.匿名函数.闭包.柯里化等等. 定义函数时格式:val 变量名 =?(输入参数类型和个数)?=>?函数实现和返回值类型和个数 "="表示将函数赋给一个变量 "=>"左面表示输入参数名称.类型和个数,右边表示函数的实现和返回值类型和参数个数 作为值的函数 定义函数 scala> val func = (x:Int) => x * x

大数据学习--配置系统环境

总结路线: 1.学习教程: 2.下载工具----VMware系统,Ubantu 14 (Linux)系统,FTP软件,Hadoop系统: 3.学习安装教程,配置安装环境: 4.学习操作语言: 5.注意事项: 一.学习教程 放假之前,老师给我们推荐了大数据学习的教程:http://dblab.xmu.edu.cn/post/5663/ 初步了解:Hadoop的所要求系统环境适用于Windows,Linux,Mac系统,而我选择使用Linux系统,电脑是Windows系统,在电脑的F盘单独存放有关大

【教程分享】基于Greenplum Hadoop分布式平台的大数据解决方案及商业应用案例剖析

基于Greenplum Hadoop分布式平台的大数据解决方案及商业应用案例剖析 课程讲师:迪伦 课程分类:Java 适合人群:高级 课时数量:96课时 用到技术:MapReduce.HDFS.Map-Reduce.Hive.Sqoop 涉及项目:Greenplum Hadoop大数据分析平台 更新程度:完毕 对这个课程有兴趣的朋友可以加我的QQ2059055336和我联系 下载地址:链接:   pan.baidu.com/s/1nthYpKH 密码: niyi 随着云计算.大数据迅速发展,亟需

基于Greenplum Hadoop分布式平台的大数据解决方案及商业应用案例剖析

随着云计算.大数据迅速发展,亟需用hadoop解决大数据量高并发访问的瓶颈.谷歌.淘宝.百度.京东等底层都应用hadoop.越来越多的企 业急需引入hadoop技术人才.由于掌握Hadoop技术的开发人员并不多,直接导致了这几年hadoop技术的薪水远高于JavaEE及 Android程序员. Hadoop入门薪资已经达到了 8K 以上,工作1年可达到 1.2W 以上,具有2-3年工作经验的hadoop人才年薪可以达到 30万—50万 . 一般需要大数据处理的公司基本上都是大公司,所以学习had

大数据学习路径

大数据学习路径我vx ①⑤零零③④③⑥⑨③① 备注 A 更多大数据第一阶段linux+搜索+hadoop体系 Linux基础→shell编程→高并发架构→lucene,solr搜索→hadoop体系→HDFS→mapreduce→hbase→zookeeper→hive→flume→sqoop→项目实战一 第二阶段机器学习 R语言→mahout→项目实战二 第三阶段storm流式计算 kafka→storm→redis→项目实战三 第四阶段spark内存计算 scala编程→spark core