首页
动态
时间轴
归档
友链
关于
Search
1
Spark在Yarn模式下提交未找到驱动
10,711 阅读
2
Spark提交任务内存不足
10,292 阅读
3
Flink集群搭建--Yarn模式
9,797 阅读
4
Spark SQL函数总结
8,516 阅读
5
Flume应用--日志采集
7,201 阅读
日常
大数据
经验分享
技术总结
登录
Search
标签搜索
bigdata
Hive
Spark
hadoop
Flume
建站
Flink
linux
Mysql
sqoop
Yarn
摸鱼
羊毛
docker
VMware
图床
sql
function
清泓
累计撰写
39
篇文章
累计收到
---
条评论
首页
动态
后台
栏目
日常
大数据
经验分享
技术总结
页面
时间轴
归档
友链
关于
搜索到
20
篇
bigdata
的结果
2022-06-06
Flink集群搭建--Local模式
前期准备安装包下载:http://archive.apache.org/dist/flink/flink-1.10.2/ 本地模式安装{dotted startColor="#ff6c6c" endColor="#1989fa"/}解压[root@master ~]# tar -zxvf /data/flink-1.10.2 -C /usr/local/src/ [root@master ~]# mv /usr/local/src/flink-1.10.2 /usr/local/src/flink配置环境变量[root@master ~]# vi /etc/profile export FLINK_HOME=/usr/local/src/flink export PATH=$PATH:$FLINK_HOME/bin [root@master ~]# source /etc/profile启动集群[root@master]# start-cluster.sh提交作业(job)[root@master ~]# flink run $FLINK_HOME/examples/streaming/WordCount.jar查看日志(结果)[root@master ~]# tail $FLINK_HOME/log/flink-*-taskexecutor-*.out监视集群的状态和正在运行的作业http://localhost:8081/#/overview 停止集群[root@master ~]# stop-cluster.sh
2022年06月06日
1,300 阅读
0 评论
1 点赞
2022-06-05
Flume应用--日志采集
创建配置文件 我习惯将配置文件放在Flume安装目录下自建文件夹保存,这样方便后续的查找、使用。创建一个名称为logListen.conf的配置文件,配置相关内容。[root@master ~]# mkdir /usr/local/src/flume/job [root@master ~]# vi /usr/local/src/flume/job/logListen.conf //基本组件 a1.sources = s1 a1.sinks = k1 a1.channels = c1 //描述source a1.sources.s1.type = exec //使用exec时需要指定shell命令,对日志进行读取 a1.sources.s1.command = tail -f /usr/local/src/hadoop/logs/hadoop-root-datanode-master.log //描述sink a1.sinks.k1.type = hdfs a1.sinks.k1.hdfs.path = hdfs://master:9000/flume/%Y%m%d%H //hdfs路径 a1.sinks.k1.hdfs.filePerfix = database-log- //指定上传到hdfs文件名的前缀 a1.sinks.k1.hdfs.round = true //是否按照时间滚动文件夹(根据时间创建新文件夹) a1.sinks.k1.hdfs.roundValue = 1 //多长时间单位创建一个文件夹 a1.sinks.k1.hdfs.roundUnit = hour //重新定义时间单位 a1.sinks.k1.hdfs.useLocalTimeStamp = true //是否使用本地时间戳 a1.sinks.k1.hdfs.batchSize = 1000 //一个批次刷新到hdfs的event数量 a1.sinks.k1.hdfs.fileType = DataStream //设置文件类型,DataStream格式不会被压缩 a1.sinks.k1.hdfs.rollInterval = 600 //多长时间将临时文件滚动成一个新的文件 a1.sinks.k1.hdfs.rollSize = 1024 //当临时文件大小(byte)达到设置值时滚动成一个新的文件 a1.sinks.k1.hdfs.rollCount = 0 //设置临时文件的滚动与event的数量无关 a1.sinks.k1.hdfs.minBlockReplicas = 1 //写入hdfs文件块的最小副本数 //描述channel a1.channels.c1.type = memory //使用内存通道 a1.channels.c1.capacity = 1000 //存储在通道中的最大event数量 a1.channels.c1.transactionCapacity = 100 //一个事务中的最大事件数 //组件连接 a1.sources.s1.channels = c1 //指定agent a1的source(源)s1的通道为c1 a1.sinks.k1.channel = c1 //指定agent a1的sink(槽)k1的通道为c1,注意sink(槽)只能有一个通道,所以连接时为channel启动[root@master ~]# flume-ng agent -f /usr/local/src/flume/job/logListen.conf -n a1参数详解flume-ng flume启动命令agent 运行一个flume agent-f /usr/local/src/flume/job/logListen.conf 指定一个配置文件-n a1 agent名称(必填)
2022年06月05日
7,201 阅读
0 评论
1 点赞
2022-06-02
Hive的DML数据操作
数据导入Load导入将文件中的数据导入(Load)到 Hive 表中语法:hive > load data [local] inpath '数据路径' [overwrite] into table table_name [partition (partcoll=vall,...)];参数详解:load data:加载数据local:表示从本地加载数据到 hive 表,否则从 HDFS 加载数据到 hive 表inpath:表示加载数据的路径overwrite:表示覆盖表中已有的数据,否则表示追加into table:表示加载到具体哪张表实例:1.无分区----加载本地路径数据到表 (overwrite重写)hive > load data local inpath '/data/load_data.txt' overwrite into table tbl_test;2.有分区----加载本地路径数据到表 (overwrite重写)hive > load data local inpath '/data/load_data.txt' overwrite into tbl_test partition (date='20201212');3.无分区----加载HDFS路径数据到表 (与本地相比,少一个local)hive > load data inpath '/tmp/data.txt' overwrite into table tbl_test;4.有分区----加载HDFS路径数据到表 (overwrite重写)hive > load data inpath '/tmp/data.txt' overwrite into table tbl_test partition (date='20201212');Insert导入向表中插入数据(Insert)1.基本插入数据hive > insert into table table_name partition(date='20201212') values(10001,'test');2.基本模式插入(根据单张表查询结果)hive > insert overwrite table table_name partition(date='20201212') select id, name from student where date='20201212';3.多插入模式(根据多张表查询结果)hive > from student insert overwrite table table_name partition(date='20201212') select id, name where date='20201212' insert overwrite table table_name partition(month='201706') select id, name where date='20201212';As Select导入查询语句中创建表并加载数据(As Select)语法:hive > create table table_name(id int) as select id from table_names;Location导入创建表时通过Location指定加载数据路径语法:hive > create table table_name(id int) location '集群数据路径';Import导入向表中装载数据(import)注意:先用export导出后,再将数据导入语法:hive > import table table_name partition(date='20201212') from '/user/hive/warehouse/export/table_name'; 数据导出Insert导出1.将查询的结果导出到本地hive > insert overwrite local directory '/datas/export/file' select * from table_name;2.将查询的结果格式化导出到本地hive > insert overwrite local directory '/datas/export/file' row format delimited fields terminated by '\t' select * from table_name;3.将查询的结果导出到HDFS上(没有local)hive > insert overwrite directory '/datas/export/file' row format delimited fields terminated by '\t' select * from student;Hadoop命令导出注意:该命令在hive命令行执行hive > dfs -get /user/hive/warehouse/test/date=20220505/000000_0 /opt/module/datas/export/test.txt;Hive Shell命令导出基本语法:(hive -f/-e 执行语句或者脚本 > file)bin/hive -e 'select * from default.test;' > /opt/module/datas/export/test.txt;Export导出到HDFShive > export table default.test to '/user/hive/warehouse/export/test';清除数据(Truncate)注意:Truncate只能删除管理表,不能删除外部表中数据hive > truncate table table_name;
2022年06月02日
917 阅读
0 评论
1 点赞
2022-06-01
Hive的库表操作
Hive的库表操作 hive是类sql的,所以对库表的操作也和sql相似。这里总结一下Hive的DDL数据定义,因为查询语句篇幅太长,就另起一篇记录Hive操作数据库{lamp/}创建数据库 首先,hive是将HDFS中结构化的数据文件映射成一张数据库表,并提供类SQL的功能。所以,可以将创建数据库理解为是创建一个大文件夹,而创建表则是创建一个存储结构数据的小文件夹1.创建一个数据库,数据库在HDFS 上的默认存储路径是 /user/hive/warehouse/\*.db2.避免要创建的数据库已经存在错误,增加 if not exists 判断。(标准写法)3.创建一个数据库,可以使用 location 指定数据库在 HDFS 上存放的位置 完整的创建数据库指令为:hive> create database [if not exists] <数据库名> [location <HDFS路径>];举例:在HDFS的hive目录下创建Test库hive> create database if not exists Test location '/hive/Test'; //要指定数据库名查询数据库Hive数据库查询常用操作指令1.查看所有数据库hive> show databases; 2.查看以db_开头的数据库hive> show databases like ‘db_*’;3.查看数据库的描述信息hive> desc database 数据库名;4.查看数据库详细的信息hive> desc database extended 数据库名;切换数据库hive> use 数据库名;修改数据库给数据库设置属性值,采用键值对标识这个数据库的属性信息。数据库的其他元数据信息都是不可更改的,包括数据库名和数据库所在的目录位置。语法:hive> alter database <database_name> set dbpropertis ('<property_name>'='<property_value>',..); 删除数据库1.删除空数据库可以直接删除2.删除数据库时,最好采用 if exists 判断数据库是否存在3.如果数据库不为空,可以采用 cascade 命令,强制删除。在删除数据库的时候会将数据库下面的所有表也进行删除。数据库删除后相应的hdfs上的目录也会被删除。hive> drop database [if exists] 数据库名;Hive操作表{lamp/}创建表建表语句:create [external] table [if not exists] 表名 [(字段名 数据类型 [comment 字段注释], ...)] [comment 表注释] [partitioned by (字段名 数据类型 [comment 字段注释], ...)] [clustered by (字段名, 字段名, ...) [sorted by (字段名 [ASC|DESC], ...)] into num_buckets BUCKETS] [row format row_format] [stored as file_format] [location hdfs_path]字段解释:1.create table 创建一个指定名字的表。如果相同名字的表已经存在,则抛出异常;可以用 if not exists 选项来忽略这个异常2.external 关键字可以让用户创建一个外部表,在建表的同时指定一个指向实际数据的路径(location),Hive 创建内部表时,会将数据移动到数据仓库指向的路径;若创建外部表,仅记录数据所在的路径,不对数据的位置做任何改变。在删除表的时候,内部表的元数据和数据会被一起删除,而外部表只删除元数据,不删除数据3.comment:为表或列添加注释4.partitioned by 创建分区表5.clustered by 创建分桶表6.sorted by 指定排序(不常用)7.row format delimited [fields terminated by char] [collection items terminated by char] [map keys terminated by char] [lines terminated char] | serde serde_name [with serdeproperties (property_name=property_value, property_name=property_value, ...)]用户在建表的时候可以自定义 SerDe 或者使用自带的 SerDe。如果没有指定 ROW FORMAT 或者 ROW FORMAT DELIMITED,将会使用自带的 SerDe。在建表的时候,用户还需要为表指定列,用户在指定表的列的同时也会指定自定义的 SerDe,Hive 通过 SerDe 确定表的具体的列的数据。SerDe 是 Serialize/Deserilize 的简称,目的是用于序列化和反序列化8.stored as 指定存储文件类型9.location指定表在HDFS 上的存储位置。10.like 复制现有的表结构,但是不复制数据建表实例1.直接使用create语句 (if not exists判断是否已存在表,by后面接分隔符)//创建tbl_test1表,列分隔符为 , hive > create table if not exists tbl_test1(key int,value string) row format delimited fields terminated by ',';2.使用子查询的结果集建表 (表名前可加库名(库名.表名))create table 表名 as 子查询hive> create table tbl_test2 as select * from tbl_test1 where id > 1;3.使用子查询的结果集创建临时表create temporary table 表名 as select * from 表名2 limit 200;hive > create temporary table tbl_test3 as select * from tbl_test2 limit 200;4.创建外部表create external table 表名 (字段1 数据类型,字段2 数据类型) row format delimined fields terminated by ',';hive > create external table tbl_test4 (key1 string,key2 string) row format delimined fields terminated by ',';5.使用子查询的结果集创建创建视图create view 视图名 as select * from 表名 limit 200;hive > create view tbl_test5 as select * from tbl_test4 limit 200;6.根据已经存在的表结构创建表(不导入数据)hive > create table if not exists tbl_test6 like tbl_test5;7.创建分区表hive > create table tbl_test7(key1 int, key2 string) partitioned by (partitionkey string) row format delimited fields terminated by '\t';删除表不作判断直接删除hive > drop table tb_name;判断是否存在hive > drop table if exists tb_name;修改表1.重命名表hive > alter table table_name rename to new_table_name2.增加列hive > alter table student add columns (rank string);3.添加分区//添加多个分区partition(分区字段='分区值')以空格分隔 hive > alter table table_name add partition(分区字段='分区值') partition(分区字段='分区值'); 4.删除分区hive > alter table student drop partition(分区字段='分区值');5.替换列hive > alter table table_name replace columns (col_name data_type [comment col_comment], ...)6.更新列hive > alter table table_name change [column] col_old_name col_new_name column_type [comment col_comment] [first|after column_name]
2022年06月01日
894 阅读
0 评论
1 点赞
2022-05-14
大数据环境搭建
大数据环境搭建{lamp/}配置相关节点信息hostnameiplinuxmaster192.168.100.101CentOS7slave1192.168.100.102CentOS7slave2192.168.100.103CentOS7软件版本软件名版本号JDK1.8Hadoop2.7.7Zookeeper3.4.6Hive2.3.4Scala2.11Spark2.1.1Sqoop1.4.2Flume1.7.0Kafka2.0.0Flink1.10.2环境变量配置位置:/root/profile软件包位置:/usr/local/src/software软件安装位置:/usr/local/srcJDK{dotted startColor="#ff6c6c" endColor="#1989fa"/}1.解压[root@master ~]# tar -zxvf /usr/local/src/software/jdk1.8_162 -C /usr/local/src/ [root@master ~]# mv /usr/local/src/jdk1.8_162 /usr/local/src/jdk82.配置环境变量[root@master ~]# vi /root/profile export JAVA_HOME=/usr/local/src/jdk8 export PATH=$PATH:$JAVA_HOME/bin [root@master ~]# source /root/profile [root@master ~]# java -version java version "1.8.0_162" Java(TM) SE Runtime Environment (build 1.8.0_162-b12) Java HotSpot(TM) 64-Bit Server VM (build 25.162-b12, mixed mode)3.分发并配置环境变量[root@master ~]# scp -r /usr/local/src/jdk8 slave1:/usr/local/src/ [root@master ~]# scp -r /usr/local/src/jdk8 slave2:/usr/local/src/Hadoop{dotted startColor="#ff6c6c" endColor="#1989fa"/}1.解压[root@master ~]# tar -zxvf /usr/local/src/software/hadoop-2.7.7 -C /usr/local/src/ [root@master ~]# mv /usr/local/src/hadoop-2.7.7 /usr/local/src/hadoop2.配置环境变量[root@master ~]# vi /root/profile export HADOOP_HOME=/usr/local/src/hadoop export PATH=$PATH:$HADOOP_HOME/bin export PATH=$PATH:$HADOOP_HOME/sbin [root@master ~]# source /root/profile [root@master ~]# hadoop version Compiled by stevel on 2018-07-18T22:47Z Compiled with protoc 2.5.0 From source with checksum 792e15d20b12c74bd6f19a1fb886490 This command was run using /usr/local/src/hadoop-2.7.7/share/hadoop/common/hadoop-common-2.7.7.jar3.修改配置文件修改core-site.xml[root@master ~]# vi /usr/local/src/hadoop/etc/hadoop/core-site.xml<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://master:9000</value> </property> <!-- 指定hadoop数据的存储目录 --> <property> <name>hadoop.tmp.dir</name> <value>/usr/local/src/hadoop/tmp</value> </property> </configuration>修改hdfs-site.xml[root@master ~]# vi /usr/local/src/hadoop/etc/hadoop/hdfs-site.xml<configuration> <!--指定namenode web访问端口--> <property> <name>dfs.namenode.http-address</name> <value>master:50070</value> </property> <!--指定secondarynamenode web访问端口--> <property> <name>dfs.namenode.secondary.http-address</name> <value>slave1:50090</value> </property> <!--指定副本数--> <property> <name>dfs.replication</name> <value>3</value> </property> <!--指定namenode数据存储路径--> <property> <name>dfs.namenode.name.dir</name> <value>/usr/local/src/hadoop/tmp/name</value> </property> <!--指定datanode数据存储路径--> <property> <name>dfs.datanode.data.dir</name> <value>/usr/local/src/hadoop/tmp/data</value> </property> </configuration>修改mapred-site.xml注意所在目录[root@master hadoop]# cp etc/hadoop/mapred-examplate-site.xml etc/hadoop/mapred-site.xml<configuration> <!--指定mappreduce运行在yarn--> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <!--配置历史服务--> <property> <name>mapreduce.jobhistory.address</name> <value>master:10020</value> </property> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>master:19888</value> </property> </configuration>修改yarn-site.xml[root@master ~]# vi /usr/local/src/hadoop/etc/hadoop/yarn-site.xml<configuration> <!--指定yarn走shuffle--> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.resourcemanager.hostname</name> <value>master</value> </property> </configuration>修改slaves[root@master ~]# vi /usr/local/src/hadoop/etc/hadoop/slaves master slave1 slave2修改hadoop-env.sh配置JAVA_HOME[root@master ~]# vi /usr/local/src/hadoop/etc/hadoop/hadoop-env.sh export JAVA_HOME=/usr/local/src/jdk修改yarn-env.sh[root@master ~]# vi /usr/local/src/hadoop/etc/hadoop/yarn-env.sh export JAVA_HOME=/usr/local/src/jdk分发并配置环境变量[root@master ~]# scp -r /usr/local/src/hadoop slave1:/usr/local/src [root@master ~]# scp -r /usr/local/src/hadoop slave2:/usr/local/src环境变量配置略启动hadoop初始化namenode [root@master ~]# hadoop namenode -format 启动 [root@master ~]# start-all.sh查看各节点启动情况master:slave1:slave2:在浏览器上访问可视化页面:http://192.168.128.101:50070/安装Zookeeper{dotted startColor="#ff6c6c" endColor="#1989fa"/}1.解压[root@master ~]# tar -zxvf zookeeper-3.4.6.tar.gz -C /usr/local/src/ [root@master ~]# mv zookeeper-3.4.5/ zookeeper/2.配置环境变量[root@master ~]# vi /root/profile export ZOOKEEPER_HOME=/usr/local/src/zookeeper export PATH=$PATH:$ZOOKEEPER_HOME/bin3.修改配置文件将zookpeeper的目录下的conf文件夹中的zoo_sample.cfg文件重命名[root@master ~]# mv zoo_sample.cfg zoo.cfg进入zoo.cfg[root@master ~]# vim zoo.cfg在文件中修改datadir的路径和添加server的配置例如可以改为同时创建dataDir属性值所指定的目录在zkData目录下创建myid文件,修改值为1,如:[root@master ~]# cd /usr/local/src/zookeeper/data/ [root@master data]# touch myid [root@master data]# echo 1 > myid然后在其他两个节点上进行相同的操作并配置环境变量,只不过要把myid的值改为2和3,4.启动zookeeper安装完成后在zookpeeper目录下在三个节点上分别执行命令,启动服务: zkServer.sh start在三个节点上分别执行命令,查看状态: zkServer.sh status正确结果应该是:三个节点中其中一个是leader ,另外两个是 follower在三个节点上分别执行命令:jps检查三个节点是否都有QuromPeerMain 进程master:slave1:slave2:zookeeper安装完成5.zookeeper启停脚本start-zk.sh#!/bin/sh for host in master slave1 slave2 do ssh $host "source /root/.bash_profile ;/usr/local/src/zookeeper/bin/zkServer.sh start" echo "$host zk is running" donestop-zk.sh#!/bin/sh for host in master slave1 slave2 do echo "$host zk is stopping" ssh $host "source /root/.bash_profile ;/usr/local/src/zookeeper/bin/zkServer.sh stop" done给脚本赋权:chmod +x start-zk.sh和chmod +x stop-zk.shHadoop的HA搭建{dotted startColor="#ff6c6c" endColor="#1989fa"/}需要先把之前格式化生成的文件删除,并且修改hadoop的配置文件,基本等同于重新搭建了一个hadoop集群删除之前的缓存文件[root@master hadoop]# rm -rf tmp/ logs/修改配置文件1.修改hdfs-site.xml<configuration> <property> <name>dfs.replication</name> <value>3</value> </property> <property> <name>dfs.name.dir</name> <value>/usr/local/src/hadoop/tmp/name</value> </property> <property> <name>dfs.data.dir</name> <value>/usr/local/src/hadoop/tmp/data</value> </property> <property> <name>dfs.nameservices</name> <value>hadoopcluster</value> </property> <property> <name>dfs.ha.namenodes.hadoopcluster</name> <value>nn1,nn2</value> </property> <property> <name>dfs.namenode.rpc-address.hadoopcluster.nn1</name> <value>master:9000</value> </property> <property> <name>dfs.namenode.rpc-address.hadoopcluster.nn2</name> <value>slave1:9000</value> </property> <property> <name>dfs.namenode.http-address.hadoopcluster.nn1</name> <value>master:50070</value> </property> <property> <name>dfs.namenode.http-address.hadoopcluster.nn2</name> <value>slave1:50070</value> </property> <property> <name>dfs.namenode.shared.edits.dir</name> <value>qjournal://master:8485;slave1:8485;slave2:8485/hadoopcluster</value> </property> <property> <name>dfs.journalnode.edits.dir</name> <value>/usr/local/src/hadoop/tmp/jn</value> </property> <property> <name>dfs.ha.fencing.methods</name> <value>shell(/bin/true)</value> </property> <property> <name>dfs.ha.fencing.private-key-files</name> <value>/root/.ssh/id_rsa</value> </property> <property> <name>dfs.permissions.enable</name> <value>false</value> </property> <property> <name>dfs.client.failover.proxy.provider.hadoopcluster</name> <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value> </property> <property> <name>dfs.ha.automatic-failover.enabled</name> <value>true</value> </property> </configuration>2.修改core-site.xml<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://hadoopcluster</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/usr/local/src/hadoop/tmp</value> </property> <property> <name>ha.zookeeper.quorum</name> <value>master:2181,slave1:2181,slave2:2181</value> </property> </configuration>3.修改yarn-site.xml <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <!--启用resourcemanager ha--> <property> <name>yarn.resourcemanager.ha.enabled</name> <value>true</value> </property> <!--声明两台resourcemanager的地址--> <property> <name>yarn.resourcemanager.cluster-id</name> <value>cluster-yarn1</value> </property> <property> <name>yarn.resourcemanager.ha.rm-ids</name> <value>rm1,rm2</value> </property> <property> <name>yarn.resourcemanager.hostname.rm1</name> <value>master</value> </property> <property> <name>yarn.resourcemanager.hostname.rm2</name> <value>slave1</value> </property> <!--指定zookeeper集群的地址--> <property> <name>yarn.resourcemanager.zk-address</name> <value>master:2181,slave1:2181,slave2:2181</value> </property> <!--启用自动恢复--> <property> <name>yarn.resourcemanager.recovery.enabled</name> <value>true</value> </property> <!--指定resourcemanager的状态信息存储在zookeeper集 群--> <property> <name>yarn.resourcemanager.store.class</name> <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value> </property>mapred-site.xml之前配置过不用修改hadoop-env.sh之前配置过不用修改yarn-site.sh之前配置过不用修改slaves之前配置过不用修改初始化在保证zookeeper启动的情况下启动各节点的journalnode[root@master hadoop]# sbin/hadoop-daemon.sh start journalnode [root@slave1 hadoop]# sbin/hadoop-daemon.sh start journalnode [root@slave2 hadoop]# sbin/hadoop-daemon.sh start journalnode启动成功后,进行格式化[root@master hadoop]# bin/hdfs namenode -format格式化成功显示格式化成功后,启动master上的NameNodesbin/hadoop-daemon.sh start namenode启动成功后,在slave1上进行元数据的同步在slave1的hadoop文件夹下输入bin/hdfs namenode -bootstrapStandby如图显示同步成功后:把master上的NameNode关闭关闭master上的NameNode后,我们还需要初始化zookpeeper的状态bin/hdfs zkfc -formatZK如图所示代表初始化成功:启动当我们上面的步骤都完成后,我们可以开始启动集群进行测试HA环境的搭建是否成功先在master上启动所有节点[root@master hadoop]# sbin/start-all.sh还需要手动启动jobhistoryserver[root@master hadoop]# sbin/mr-jobhistory-daemon.sh start historyserver 然后在slave1上还布置了一个resourcemanager,这个也是在start-all.sh时无法启动,我们需要在slave1下手动启动在slave1的hadoop目录下,执行[root@slave1 hadoop]# sbin/yarn-daemon.sh start resourcemanager这就是启动HadaoopHA上要启动的节点master:slave1:slave2:web端的显示信息:现在在活动的节点是master上的namenode,resourcemanager我们可以手动kill掉,看看故障是否会自动转移,实现ha的基本意义kill掉master上的namenode,查看网页端发现slave1上的namenode变为了active,也就是自动故障转移了,resourcemanager的就不在演示了这里基本可以说明hadoop的ha配置完成了hive{dotted startColor="#ff6c6c" endColor="#1989fa"/}解压# 注意:Hive只需要在master节点上安装配置 [root@master ~]# cd /usr/local/src/software/ [root@master software]# tar -zxvf apache-hive-1.2.1-bin.tar.gz -C /usr/local/src/ [root@master software]# cd .. [root@master src]# mv apache-hive-1.2.1-bin/ hive安装mysqlhive它有自己的内置数据库derby,但是hive 使用derby 数据库存在不支持多个连接的问题,所以我们一般会使用mysql来代替hive的元数据库我们的mysql版本为5.7.18,安装文件如下: mysql-community-client-5.7.18-1.el7.x86_64.rpm mysql-community-common-5.7.18-1.el7.x86_64.rpm mysql-community-libs-5.7.18-1.el7.x86_64.rpm mysql-community-server-5.7.18-1.el7.x86_64.rpm 我们按照顺序安装即可 注之前的liunx带的MariaDB要卸载 [root@master ~]# rpm -qa | grep mariadb mariadb-libs-5.5.52-2.el7.x86_64 然后卸载 [root@master ~]# rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64 [root@master 5.7.18]#rpm -ivh mysql-community-common-5.7.18-1.el7.x86_64.rpm [root@master 5.7.18]# rpm -ivh mysql-community-libs-5.7.18-1.el7.x86_64.rpm [root@master 5.7.18]# rpm -ivh mysql-community-client-5.7.18-1.el7.x86_64.rp m [root@master 5.7.18]# rpm -ivh mysql-community-server-5.7.18-1.el7.x86_64.rp m 安装之后查看安装情况 [root@master 5.7.18]# rpm -qa | grep mysql mysql-community-common-5.7.18-1.el7.x86_64 mysql-community-client-5.7.18-1.el7.x86_64 mysql-community-libs-5.7.18-1.el7.x86_64 mysql-community-server-5.7.18-1.el7.x86_64 之后自己修改一下mysql的密码即可 修改过程可以看这个博客 https://blog.csdn.net/qq_35354260/article/details/83182900 [root@master ~]# mysql -uroot -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 4 Server version: 5.7.18 MySQL Community Server (GPL) Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> 安装完成 同时我们还需要去网上下载mysql的驱动包(mysql-connector-java-5.1.26.jar)把这个驱动包放置在hive目录下的lib目录下。修改配置文件[root@master software]# cd .. [root@master src]# cd hive/ [root@master hive]# cd conf/ [root@master conf]# vim hive-site.xml<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://master:3306/hive?createDatabaseIfNotExist=true&useSSL=false</value> <description>JDBC connect string for a JDBC metastore</description> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> <description>Driver class name for a JDBC metastore</description> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>root</value> <description>username to use against metastore database</description> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>123456(填写mysql的用户密码,这里是root用户的密码)</value> </property> <property> <name>hive.exec.scratchdir</name> <value>/usr/local/src/set/hive/tmp</value> </property> <property> <name>hive.exec.local.scratchdir</name> <value>/usr/local/src/set/hive/tmp/local</value> </property> <property> <name>hive.downloaded.resources.dir</name> <value>/usr/local/src/set/hive/tmp/resources</value> </property> <!--是否开启静态分区--> <property> <name>hive.exec.dynamic.partition</name> <value>true</value> </property> <!--动态分区模式--> <property> <name>hive.exec.dynamic.partition.mode</name> <value>nonstrict</value> </property> <!--所有执行MR的节点最大可以创建动态分区数--> <property> <name>hive.exec.max.dynamic.partitions</name> <value>100000</value> </property> <!--每个执行MR的节点最大可以创建动态分区数--> <property> <name>hive.exec.max.dynamic.partitions.pernode</name> <value>100000</value> </property> <!--是否在控制台打印表头信息--> <property> <name>hive.cli.print.header</name> <value>true</value> </property> <!--是否在控制台显示当前数据库--> <property> <name>hive.cli.print.current.db</name> <value>true</value> </property> <!--配置hive元数据服务--> <property> <name>hive.metastore.uris</name> <value>thrift://master:9083</value> </property> </configuration>[root@master conf]# vim hive-env.sh export HADOOP_HOME=/usr/local/src/hadoop export JAVA_HOME=/usr/local/src/jdk1.8.0_121初始化hive元数据库[root@master hive]# schematool -initSchema -dbType mysql显示如下就是成功这样Hive 的元数据库就配置完成注:如果没成功的话.可能是hadoop目录下的/share/hadoop/yarn/lib/ 中的jline-0.9.94.jar文件太老了,我们需要将hive的lib中的jline-2.12.jar放到hadoop的/share/hadoop/yarn/lib/中,同时将老版本的jline删除另外注:如果hive的初始化失败,可能是在mysql中没赋权的原因,需要在mysql中配置mysql > GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'IDENTIFIED BY '123456' WITH GRANT OPTION;才能顺利初始化测试进入Hive 命令行 执行命令 创建一个名为 test 的表 查询该表的记录数:hive> create table test(id int); hive> select count(*) from test;如果查询结果为0,则成功hive安装完成Scala{dotted startColor="#ff6c6c" endColor="#1989fa"/}解压[root@master ~]# cd /usr/local/src/software/ [root@master software]# tar -zxvf scala-2.11.11.tgz -C /usr/local/src/配置环境变量[root@master ~]# vi /root/profile export HIVE_HOME=/usr/local/src/hive export PATH=$PATH:$HIVE_HOME/bin查看版本[root@master scala-2.11.6]# scala -version Scala code runner version 2.11.6 -- Copyright 2002-2013, LAMP/EPFL分发并配置环境变量[root@master ~]# scp -r /usr/local/src/scala slave1:/usr/local/src [root@master ~]# scp -r /usr/local/src/scala slave2:/usr/local/src环境变量配置同上Spark{dotted startColor="#ff6c6c" endColor="#1989fa"/}此处介绍4种部署模式,按需求选择配置即可本地模式搭建直接解压配置环境变量运行即可StandAlone独立部署模式使用 Spark 自身节点运行的集群模式,也就是所谓的独立部署(Standalone)模式。Spark 的 Standalone 模式体现了经典的 master-slave 模式。集群规划:masterslave1slave2Worker MasterWorkerWorker解压[root@master ~]# cd /usr/local/src/software/ [root@master software]# tar -zxvf spark-2.1.1-bin-hadoop2.7.tgz -C /usr/local/src/ [root@master software]# mv /usr/local/src/spark-2.1.1-bin-hadoop2.7 /usr/local/src/spark配置环境变量[root@master ~]# vi /root/profile export SPARK_HOME=/usr/local/src/spark export PATH=$PATH:$SPARK_HOME/bin修改配置文件1.重命名slaves.template文件名[root@master ~]# mv /usr/local/src/spark/conf/slaves.template /usr/local/src/conf/slaves2.修改slaves文件,添加 work 节点master slave1 slave23.修改 spark-env.sh.template 文件名为 spark-env.sh[root@master ~]# mv spark-env.sh.template spark-env.sh4.修改 spark-env.sh 文件,添加 JAVA_HOME 环境变量和集群对应的 master 节点export JAVA_HOME=/opt/module/jdk8 SPARK_MASTER_HOST=master SPARK_MASTER_PORT=70775.分发spark安装目录分发到其余节点,并配置环境变量[root@master ~]# scp -r /usr/local/src/spark slave1:/usr/local/src [root@master ~]# scp -r /usr/local/src/spark slave2:/usr/local/src6.启动[root@master spark]# sbin/start-all.shSparkHA 搭建解压[root@master ~]# cd /usr/local/src/software/ [root@master software]# tar -zxvf spark-2.1.1-bin-hadoop2.7.tgz -C /usr/local/src/ [root@master software]# mv /usr/local/src/spark-2.1.1-bin-hadoop2.7 /usr/local/src/spark配置环境变量[root@master ~]# vi /root/profile export SPARK_HOME=/usr/local/src/spark export PATH=$PATH:$SPARK_HOME/bin修改配置文件(spark的HA)[root@master spark]# cd conf/ root@master conf]# mv spark-env.sh.template spark-env.sh [root@master conf]# vim spark-env.sh export JAVA_HOME=/usr/local/src/jdk8 export SPARK_MASTER_PORT=7077 export HADOOP_HOME=/usr/local/src/hadoop export HADOOP_CONF_DIR=/usr/local/src/hadoop/etc/hadoop export SCALA_HOME=/usr/local/src/scala-2.11.11 export SPARK_DAEMON_JAVA_OPTS=" -Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=master:2181,slave1:2181,slave2:2181 -Dspark.deploy.zookeeper.dir=/spark" [root@master conf]# mv slaves.template slaves [root@master conf]# vim slaves master slave1 slave25.分发spark安装目录分发到其余节点,并配置环境变量[root@master ~]# scp -r /usr/local/src/spark slave1:/usr/local/src [root@master ~]# scp -r /usr/local/src/spark slave2:/usr/local/src6.启动[root@master spark]# sbin/start-all.shSpark on Yarn 搭建解压[root@master ~]# cd /usr/local/src/software/ [root@master software]# tar -zxvf spark-2.1.1-bin-hadoop2.7.tgz -C /usr/local/src/ [root@master software]# mv /usr/local/src/spark-2.1.1-bin-hadoop2.7 /usr/local/src/spark配置环境变量[root@master ~]# vi /root/profile export SPARK_HOME=/usr/local/src/spark export PATH=$PATH:$SPARK_HOME/bin修改配置文件1.修改 hadoop 配置文件/opt/module/hadoop/etc/hadoop/yarn-site.xml, 并分发到其他节点添加如下配置<!--是否启动一个线程检查每个任务正使用的物理内存量,如果任务超出分配值,则直接将其杀掉,默认 是 true --> <property> <name>yarn.nodemanager.pmem-check-enabled</name> <value>false</value> </property> <!--是否启动一个线程检查每个任务正使用的虚拟内存量,如果任务超出分配值,则直接将其杀掉,默认 是 true --> <property> <name>yarn.nodemanager.vmem-check-enabled</name> <value>false</value> </property>分发[root@master ~]# scp /usr/local/src/hadoop/etc/hadoop/yarn-site.xml slave1:/usr/local/src/hadoop/etc/hadoop/2.修改 conf/spark-env.sh,添加 JAVA_HOME 和 YARN_CONF_DIR 配置export JAVA_HOME=/opt/module/jdk1.8.0_144 YARN_CONF_DIR=/opt/module/hadoop/etc/hadoop5.分发spark安装目录分发到其余节点,并配置环境变量[root@master ~]# scp -r /usr/local/src/spark slave1:/usr/local/src [root@master ~]# scp -r /usr/local/src/spark slave2:/usr/local/srcspark-submit提交参数参数名参数说明--mastermaster 的地址,提交任务到哪里执行,例如 spark://host:port, yarn, local--deploy-mode在本地 (client) 启动 driver 或在 cluster 上启动,默认是 client--class应用程序的主类,仅针对 java 或 scala 应用--name应用程序的名称--jars用逗号分隔的本地 jar 包,设置后,这些 jar 将包含在 driver 和 executor 的 classpath 下--packages包含在driver 和executor 的 classpath 中的 jar 的 maven 坐标--exclude-packages为了避免冲突 而指定不包含的 package--repositories远程 repository--conf PROP=VALUE指定spark 配置属性的值,例如-conf spark.executor.extraJavaOptions="-XX:MaxPermSize=256m"--properties-file加载的配置文件,默认为 conf/spark-defaults.conf--driver-memoryDriver内存,默认 1G--driver-java-options传给 driver 的额外的 Java 选项--driver-library-path传给 driver 的额外的库路径--driver-class-path传给 driver 的额外的类路径--driver-coresDriver 的核数,默认是1。在 yarn 或者 standalone 下使用--executor-memory每个 executor 的内存,默认是1G--total-executor-cores所有 executor 总共的核数。仅仅在 mesos 或者 standalone 下使用--num-executors启动的 executor 数量。默认为2。在 yarn 下使用--executor-core每个 executor 的核数。在yarn或者standalone下使用Sqoop{dotted startColor="#ff6c6c" endColor="#1989fa"/}注意:Sqoop只需要在master节点上安装配置解压[root@master ~]# cd /usr/local/src/software/ [root@master software]# tar -zxvf sqoop-1.4.2.bin__hadoop-2.0.0-alpha.tar.gz -C /usr/local/src/ [root@master software]# cd .. [root@master src]# mv sqoop-1.4.2.bin__hadoop-2.0.0-alpha/ sqoop-1.4.6配置环境变量[root@master ~]# vi /root/profile export SQOOP_HOME=/usr/local/src/sqoop export PATH=$PATH:$SQOOP_HOME/bin测试环境变量[root@master ~]# source /root/profile [root@master ~]# sqoop version出现类似上图即成功,如果出现警告信息,需要注释一些配置文件执行Sqoop中import命令后报错Warning: /opt/module/sqoop/bin/../../hcatalog does not exist! HCatalog jobs will fail. Please set $HCAT_HOME to the root of your HCatalog installation. Warning: /opt/module/sqoop/bin/../../accumulo does not exist! Accumulo imports will fail. Please set $ACCUMULO_HOME to the root of your Accumulo installation.解决方案:在$SQOOP_HOME/bin目录下面修改configure-sqoop文件,注释掉以下内容:#if [ -z "${HCAT_HOME}" ]; then # if [ -d "/usr/lib/hive-hcatalog" ]; then # HCAT_HOME=/usr/lib/hive-hcatalog # elif [ -d "/usr/lib/hcatalog" ]; then # HCAT_HOME=/usr/lib/hcatalog # else # HCAT_HOME=${SQOOP_HOME}/../hive-hcatalog # if [ ! -d ${HCAT_HOME} ]; then # HCAT_HOME=${SQOOP_HOME}/../hcatalog # fi # fi #fi #if [ -z "${ACCUMULO_HOME}" ]; then # if [ -d "/usr/lib/accumulo" ]; then # ACCUMULO_HOME=/usr/lib/accumulo # else # ACCUMULO_HOME=${SQOOP_HOME}/../accumulo # fi #fi ## Moved to be a runtime check in sqoop. #if [ ! -d "${HCAT_HOME}" ]; then # echo "Warning: $HCAT_HOME does not exist! HCatalog jobs will fail." # echo 'Please set $HCAT_HOME to the root of your HCatalog installation.' #fi #if [ ! -d "${ACCUMULO_HOME}" ]; then # echo "Warning: $ACCUMULO_HOME does not exist! Accumulo imports will fail." # echo 'Please set $ACCUMULO_HOME to the root of your Accumulo installation.' #fi然后先后执行start-dfs.sh与start-yarn.sh启动hadoop集群,Sqoop功能恢复正常。修改配置文件[root@master sqoop-1.4.6]# cd conf/ [root@master conf]# mv sqoop-env-template.sh sqoop-env.sh [root@master conf]# vim sqoop-env.sh # Set Hadoop-specific environment variables here. #Set path to where bin/hadoop is available export HADOOP_HOME=/usr/local/src/hadoop-2.7.7 #set the path to where bin/hbase is available # 我这里没有安装Hbase就不用配置了 #export HBASE_HOME= #Set the path to where bin/hive is available export HIVE_HOME=/usr/local/src/hive #Set the path for where zookeper config dir is export ZOOCFGDIR=/usr/local/src/zookeeper 添加mysql驱动在修改完配置文件后,把mysql的jar包上传的sqoop的lib目录下也就是在安装hive时使用的jar包验证连接验证sqoop连接mysql数据库是否成功mysql数据库的密码为123456命令行输入sqoop-list-databases --connect jdbc:mysql://master:3306 --username root --password 123456成功后显示所有数据库sqoop安装测试完成Kafka{dotted startColor="#ff6c6c" endColor="#1989fa"/}解压[root@master ~]# cd /usr/local/src/software [root@master software]# tar -zxvf kafka_2.11-2.0.0.tgz -C /usr/local/src/ [root@master ~]# mv /usr/local/src/kafka_2.11-2.0.0/ /usr/local/src/kafka配置环境变量[root@master ~]# vi /root/profile export KAFKA_HOME=/usr/local/src/kafka export PATH=$PATH:$KAFKA_HOME/bin生效环境变量[root@master ~]# source /root/profile修改配置文件[root@master kafka_2.11]# cd config/ [root@master config]# vim server.properties broker.id=0 listeners=PLAINTEXT://192.168.128.100:9092 advertised.listeners=PLAINTEXT://192.168.128.100:9092 zookeeper.connect=192.168.128.100:2181,192.168.128.101:2181,192.168.128.102:2181分发kafka目录到各节点[root@master ~]# scp -r /usr/local/src/kafka slave1:/usr/local/src [root@master ~]# scp -r /usr/local/src/kafka slave2:/usr/local/src而在另外两个节点上,对server.properties要有几处修改broker.id 分别修改成: 1 和 2listeners 在ip那里分别修改成子节点对应的,即 PLAINTEXT://192.168.128.101:9092 和 PLAINTEXT://192.168.128.102:9092advertised.listeners 也在ip那里分别修改成子节点对应的,即 PLAINTEXT://192.168.128.101:9092 和 PLAINTEXT://192.168.128.102:9092zookeeper.connect 不需要修改启动测试kafka在启动之前一定要启动zookpeeper,否则启动kafka会报错[root@master kafka]# bin/kafka-server-start.sh config/server.properties & [root@slave1 kafka]# bin/kafka-server-start.sh config/server.properties & [root@slave2 kafka]# bin/kafka-server-start.sh config/server.properties &启动后,开始测试创建主题kafka发出消息和接收消息都是基于topic,所以要先创建一个topic,才能向里面发消息命令行输入kafka-topics.sh --create --zookeeper 192.168.128.100:2181,192.168.128.101:2181,192.168.128.102:2181 --topic Test --replication-factor 1 --partitions 1 参数说明:--create 表示创建topic--partitions 表示指定我们topic的分区数--replication-factor 指定副本数--topic 指定topic的名字--zookeeper 指定zookeeper的地址topic的信息保存在zookeeper中创建test主题启动生产者与消费者创建成功后在master上输入以下命令启动生产者通过命令行实现数据的发送 producer 生产者kafka-console-producer.sh就是用来测试用的脚本,可以模拟kafka消息的发送端[root@master ~]# kafka-console-producer.sh --broker-list 192.168.128.100:9092, 192.168.128.101:9092,192.168.128.102:9092 --topic Test说明:在server.properties文件中的配置,默认监听端口是9092--broker-list 指定我们kafka集群的地址--topic 指定我们的消息发送到哪个topic里面去输入命令后回车,会出现一个尖括号。在后边输入信息回车,就会发送出去输入的信息。然后在slave1和slave2上启动消费者通过命令行实现数据的接收 consumer 消费者[root@slave1 ~]# kafka-console-consumer.sh --bootstrap-server 192.168.128.101:9092 --topic Test --from-beginning[root@slave2 ~]# kafka-console-consumer.sh --bootstrap-server 192.168.128.102:9092 --topic Test --from-beginning参数说明:--bootstrap-server 表示我们的kafak集群的地址,在旧版本中使用的是--zookeeper参数,两者至少使用一个--from-beginning 表示我们从最开始的数据进行消费--topic指定我们topic的名字在producer端发送数据,在consumer端可以收到数据在主节点上输入的,会自动同步在其他两台节点上这里我们的kafka也就搭建完成了。关闭kafka在命令行下,按ctrl加c,退出命令行,输入[root@master kafka_2.11]# bin/kafka-server-stop.sh [root@slave1 kafka_2.11]# bin/kafka-server-stop.sh [root@slave2 kafka_2.11]# bin/kafka-server-stop.sh出现以下信息按回车即可退出可以使用jps查看一下当前进程kafka进程停止了,代表kafka已经关闭Flume{dotted startColor="#ff6c6c" endColor="#1989fa"/}解压[root@master software]# tar -zxvf apache-flume-1.7.0-bin.tar.gz -C /usr/local/src/ [root@master src]# mv apache-flume-1.7.0-bin flume配置环境变量[root@master ~]# vi /root/profile export FLUME_HOME=/usr/local/src/flume export PATH=$PATH:$FLUME_HOME/bin生效环境变量[root@master ~]# source /root/profile修改配置文件[root@master flume]# cd conf/ [root@master conf]# mv flume-env.sh.template flume-env.sh [root@master conf]# vim flume-env.sh export JAVA_HOME=/usr/local/src/jdk8这里flume就算已经配置完成了flume不需要修改太多东西,更多的都是自己自定义需要监听的目录或者端口测试首先需要知晓flume的四个参数配置,分别为:source 数据采集 采集日志数据,将采集到的日志数据传输给channelchannel 数据队列,类似管道 存储source传递过来的数据sink 数据输出 从channel中获取数据,将数据输出到目标位置(HDFS、HBase、Source)Event 传输数据的单元,Flume中采集数据并传输的最小单位以监听本地目录上传到hdfs作为测试:[root@master flume-1.6.0]# mkdir job/ [root@master flume-1.6.0]# cd job/ [root@master job]# touch test.conf [root@master job]# vim test.conf a1.sources = r1 a1.channels = c1 a1.sinks = k1 a1.sources.r1.type=spooldir a1.sources.r1.spoolDir=/usr/local/src/set/test a1.sinks.k1.type=hdfs a1.sinks.k1.hdfs.path=hdfs://master:9000/test a1.channels.c1.type=file a1.sources.r1.channels=c1 a1.sinks.k1.channel=c1监听的test目录.在这个目录创建的文件会被上传到hdfs的test目录中启动[root@master flume]#bin/flume-ng agent -f job/test.conf -n a1
2022年05月14日
973 阅读
0 评论
1 点赞
2022-05-09
Flume配置参数详解
Flume配置参数详解 Flume是一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。Flume架构对Flume进行配置需要先清楚Flume的架构{callout color="#f0ad4e"}AgentFlume以agent为最小的独立运行单位,一个Agent包含多个source、channel、sink和其他组件{/callout}{callout color="#4da9ef"}sourceflume提供多种source供用户进行选择,尽可能多的满足大部分日志采集的需求,常用的source的类型包括avro、exec、netcat、spooling-directory和syslog等。具体的使用范围和配置方法详见source.{/callout}{callout color="#e1ff00"}channelflume中的channel不如source和sink那么重要,但却是不可忽视的组成部分。常用的channel为memory-channel,同时也有其他类型的channel,如JDBC、file-channel、custom-channel等,详情见channel.{/callout}{callout color="#4defc7"}sinkflume的sink也有很多种,常用的包括avro、logger、HDFS、Hbase以及file-roll等,除此之外还有其他类型的sink,如thrift、IRC、custom等。具体的使用范围和使用方法详见sink.{/callout}SourcesFlume 中常用的 Source 有NetCat,Avro,Exec,Spooling Directory,也可以根据业务需要自定义Source,具体如下avro sourceavro可以监听和收集指定端口的日志,使用avro的source需要说明被监听的主机ip和端口号例子:agent1.sources = r1 #描述source agent1.sources.r1.type = avro (类型为avro source) agent1.sources.r1.bind = 0.0.0.0 (指定监听的主机ip.本机是0.0.0.0.) agent1.sources.r1.port = 16667 (指定监听的端口号)exec source可以通过指定的操作对日志进行读取,使用exec时需要指定shell命令,对日志进行读取例子:agent1.source = r2 #描述source agent1.sources.r2.type = exec agent1.sources.r2.command =tail -F /root/flume/log/event.txt (监听的文件的路径)Spooling-directory source可以读取文件夹里的日志,使用时指定一个文件夹,可以读取该文件夹中的所有文件,当出现新文件时会读取该文件并获取数据.需要注意的是该文件夹中的文件在读取过程中不能修改,同时文件名也不能修改。1、spoolDirectory是监控目录,不能为空,没有默认值。这个source不具有监控子目录的功能,不能递归监控。2、completedSuffix是文件读取完毕后给完成文件添加的标记后缀,默认是".COMPLETED";3、deletePolicy这是是否删除读取完毕的文件,默认是"never",就是不删除,目前只支持"never"和“IMMEDIATE”;4、fileHeader是否在event的Header中添加文件名,boolean类型, 默认false5、fileHeaderKey这是event的Header中的key,value是文件名6、batchSize这个是一次处理的记录数,默认是100;7、inputCharset编码方式,默认是"UTF-8";8、ignorePattern忽略符合条件的文件名9、trackerDirPath被处理文件元数据的存储目录,默认".flumespool"10、deserializerType将文件中的数据序列化成event的方式,默认是“LINE”---org.apache.flume.serialization.LineDeserializer11、deserializerContext这个主要用在Deserializer中设置编码方式outputCharset和文件每行最大长度maxLineLength。例子:agent1.sources = r3 #描述source agent1.sources.r3.type = spooldir agent1.sources.r3.spoolDir = /root/flume/log (监听的文件目录) agent1.sources.r3.fileHeader = trueNetCat source用来监听一个指定端口,并将接收到的数据的每一行转换为一个事件。例子: agent1.sources = r4 #描述source agent1.sources.r4.type = netcat (source类型) agent1.sources.r4.bind = 0.0.0.0 (指定绑定的ip或主机名) agent1.sources.r4.port = 16668 (指定绑定的端口号)HTTP source接受HTTP的GET和POST请求作为Flume的事件,其中GET方式应该只用于试验。type 类型,必须为"HTTP"port– 监听的端口bind 0.0.0.0 监听的主机名或iphandler org.apache.flume.source.http.JSONHandler处理器类,需要实现HTTPSourceHandler接口handler.* – 处理器的配置参数Selector.typeselector.* interceptors – interceptors.* enableSSL false 是否开启SSL,如果需要设置为true。注意,HTTP不支持SSLv3。excludeProtocols SSLv3 空格分隔的要排除的SSL/TLS协议。SSLv3总是被排除的。keystore 密钥库文件所在位置keystorePassword Keystore 密钥库密码例子:agent1.sources.r1.type = http agent1.sources.r1.port = 66666channel使用内存memory存储Memory Channel是使用内存来存储Event,使用内存的意味着数据传输速率会很快,但是当Agent挂掉后,存储在Channel中的数据将会丢失。例子:agent1.channels = c1 agent1.channels.c1.type = memory agent1.channels.c1.capacity = 100000 agent1.channels.c1.transactionCapacity = 100000使用文件file存储File Channel使用磁盘来存储Event,速率相对于Memory Channel较慢,但数据不会丢失。例子:agent1.channels = c1 agent1.channels.c1.type = file agent1.channels.c1.capacity = 100000 agent1.channels.c1.transactionCapacity = 100000sinkFlume常用Sinks有Log Sink,HDFS Sink,Avro Sink,Kafka Sink,当然也可以自定义Sinklogger sinklogger sink:将收集到的日志写到flume的log中例子:agent1.sinks = k1 agent2.sinks.k1.type = loggeravro sinkavro sink:可以将接受到的日志发送到指定端口,供级联agent的下一跳收集和接受日志,使用时需要指定目的ip和端口例子:agent1.sinks=k1 agent1.sinks.k2.type = avro agent1.sinks.k2.channel = c2 agent1.sinks.k2.hostname = hadoop03 (指定的主机名或ip) agent1.sinks.k2.port = 16666 (指定的端口号)file_roll sinkfile_roll sink:可以将一定时间内收集到的日志写到一个指定的文件中,具体过程为用户指定一个文件夹和一个周期,然后启动agent,这时该文件夹会产生一个文件将该周期内收集到的日志全部写进该文件内,直到下一个周期再次产生一个新文件继续写入,以此类推,周而复始。例子:agent1.sinks=k1 agent1.sinks.k1.type = file_roll agent1.sinks.k1.channel = c1 agent1.sinks.k1.sink.directory=/root/flumelog (指定文件所在目录的路径)hdfs sinkhdfs sink:将收集到的日志写入到新创建的文件中保存起来,存储路径为分布式的文件系统hdfs的路径,同时hdfs创建新文件的周期可以是时间,也可以是文件的大小,还可以是采集日志的条数配置参数说明:例子:agent1.sinks = k1 agent1.sinks.k1.type = hbase agent1.sinks.k1.table = flume agent1.sinks.k1.columnFamily=fl_conf agent1.sinks.k1.serializer=org.apache.flume.sink.hbase.RegexHbaseEventSerializerKafka Sink传输数据到Kafka中,需要注意Flume版本和Kafka版本的兼容性
2022年05月09日
2,046 阅读
0 评论
1 点赞
2022-05-09
Flume启动参数详解
Flume启动参数详解{lamp/}命令获取命令行输入 flume-ng --help 获取启动参数[root@GokouLuli999 ~]# flume-ng --help Usage: /usr/tools/flume/bin/flume-ng <command> [options]... commands: help display this help text agent run a Flume agent avro-client run an avro Flume client version show Flume version info global options: --conf,-c <conf> use configs in <conf> directory --classpath,-C <cp> append to the classpath --dryrun,-d do not actually start Flume, just print the command --plugins-path <dirs> colon-separated list of plugins.d directories. See the plugins.d section in the user guide for more details. Default: $FLUME_HOME/plugins.d -Dproperty=value sets a Java system property value -Xproperty=value sets a Java -X option agent options: --name,-n <name> the name of this agent (required) --conf-file,-f <file> specify a config file (required if -z missing) --zkConnString,-z <str> specify the ZooKeeper connection to use (required if -f missing) --zkBasePath,-p <path> specify the base path in ZooKeeper for agent configs --no-reload-conf do not reload config file if changed --help,-h display help text avro-client options: --rpcProps,-P <file> RPC client properties file with server connection params --host,-H <host> hostname to which events will be sent --port,-p <port> port of the avro source --dirname <dir> directory to stream to avro source --filename,-F <file> text file to stream to avro source (default: std input) --headerFile,-R <file> File containing event headers as key/value pairs on each new line --help,-h display help text Either --rpcProps or both --host and --port must be specified. Note that if <conf> directory is specified, then it is always included first in the classpath. root@ubuntu:/home/wutao# root@ubuntu:/home/wutao# flume-ng --help Error: Unknown or unspecified command '--help' Usage: /usr/tools/flume/bin/flume-ng <command> [options]... commands: help display this help text agent run a Flume agent avro-client run an avro Flume client version show Flume version info global options: --conf,-c <conf> use configs in <conf> directory --classpath,-C <cp> append to the classpath --dryrun,-d do not actually start Flume, just print the command --plugins-path <dirs> colon-separated list of plugins.d directories. See the plugins.d section in the user guide for more details. Default: $FLUME_HOME/plugins.d -Dproperty=value sets a Java system property value -Xproperty=value sets a Java -X option agent options: --name,-n <name> the name of this agent (required) --conf-file,-f <file> specify a config file (required if -z missing) --zkConnString,-z <str> specify the ZooKeeper connection to use (required if -f missing) --zkBasePath,-p <path> specify the base path in ZooKeeper for agent configs --no-reload-conf do not reload config file if changed --help,-h display help text avro-client options: --rpcProps,-P <file> RPC client properties file with server connection params --host,-H <host> hostname to which events will be sent --port,-p <port> port of the avro source --dirname <dir> directory to stream to avro source --filename,-F <file> text file to stream to avro source (default: std input) --headerFile,-R <file> File containing event headers as key/value pairs on each new line --help,-h display help text Either --rpcProps or both --host and --port must be specified. Note that if <conf> directory is specified, then it is always included first in the classpath.命令参数描述help帮助agent运行一个flume agentarvo-client运行一个Arvo Flume客户端version显示Flume版本全局选项参数描述--conf或-c 在目录使用配置文件。指定配置文件路径--classpath或-C 追加一个classpath--dryrun或-d不真正运行Agent,只打印命令信息--plugins-path 插件目录列表 默认$FLUME_HOME/plugins.d-Dproperty=value设置一个java系统属性值-Xproperty=value设置一个java-X的选项Agent选项参数描述--name或-n agent名称(必填)--conf-file或-f 指定一个配置文件(如果zk信息缺失,必填)--zkConnString或-z 指定一个zookeeper连接信息--zkBasePath或-p 指定一个基本路径给agent配置--no-reload-conf配置文件更新了不重新加载--help或-h帮助信息avro-client选项参数描述--rpcProps或-P rpc客户端连接参数的配置文件--host或-H Event所要发送的hostname--port或-p Avro Source的端口--dirname Avro Source流到达的目录--filename或-F Avro Source流到达的文件名--headerFile或-R 包含事件头的信息(每一行都是key/value键值对的格式)的文件--help或-h帮助信息
2022年05月09日
2,795 阅读
0 评论
0 点赞
1
2
3
首页
复制
搜索
前进
后退
重载网页