TinyMeng呀! - Java
type: channel
link: http://majiameng.com/article/java/
items: 大数据分析流程
items: Jenkins实现java Maven项目自动化
items: 大数据工程师（高级）复习题
items: Thymeleaf3 模版引擎使用
items: 大数据分析师（高级）复习题
items: freemarker中list的创建以及list的遍历循环
items: java 后台调用友盟推送 如何设置ios 的 title?
items: hive 搭建和使用
items: HBASE的特性以及客户端读取数据流程
items: Flume 简单使用和搭建

大数据分析流程
type: item
date: 2020-09-04T10:56:27+08:00
description: 1.大数据分析流程1.数据采集2.数据预处理3.数据入库(HIVE数据仓库)4.数据分析(ETL分析语句)5.数据展现2.需要使用到的java技术1.hadoopHadoop是一个开源框架，允许使用简单的编程模型在跨计算机集群的分布式环境中存储和处理大数据。它的设计是从单个服务器扩展到数千个机器，每个都提供本地计算和存储。MapReduce算法和Hadoop分布式文件系统2.flume 日志收集系统Flume是Cloudera提供的一个高可用的，高可靠的，分布式的海量日志采集、聚合和传输的系统，Flume支持在日志系统中定制各类数据发送方，用于收集数据；同时，Flume提供对数据进行简单处理，并写到各种数据接受方（可定制）的能力。3.hive 数据仓库hive是基于Hadoop的一个数据仓库工具，用来进行数据提取、转化、加载，这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。hive数据仓库工具能将结构化的数据文件映射为一张数据库表，并提供SQL查询功能，能将SQL语句转变成MapReduce任务来执行。Hive的优点是学习成本低，可以通过类似SQL语句实现快速MapReduce统计，使MapReduce变得更加简单，而不必开发专门的MapReduce应用程序。hive十分适合对数据仓库进行统计分析。4.hbase 非结构数据库HBase是一个分布式的、面向列的开源数据库，该技术来源于 Fay Chang 所撰写的Google论文“Bigtable：一个结构化数据的分布式存储系统”。就像Bigtable利用了Google文件系统（File System）所提供的分布式数据存储一样，HBase在Hadoop之上提供了类似于Bigtable的能力。HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库，它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。5.Kibana 日志分析平台6.sqoop 数据转换Sqoop(发音：skup)是一款开源的工具，主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql...)间进行数据的传递，可以将一个关系型数据库（例如 ： MySQL ,Oracle ,Postgres等）中的数据导进到Hadoop的HDFS中，也可以将HDFS的数据导进到关系型数据库中。7.storm 数据实时计算Storm是Twitter开源的分布式实时大数据处理框架，被业界称为实时版Hadoop。随着越来越多的场景对Hadoop的MapReduce高延迟无法容忍，比如网站统计、推荐系统、预警系统、金融系统(高频交易、股票)等等，大数据实时处理解决方案（流计算）的应用日趋广泛，目前已是分布式技术领域最新爆发点，而Storm更是流计算技术中的佼佼者和主流。Storm对于实时计算的意义类似于Hadoop对于批处理的意义。Hadoop提供了map、reduce原语，使我们的批处理程序变得简单和高效。同样，Storm也为实时计算提供了一些简单高效的原语，而且Storm的Trident是基于Storm原语更高级的抽象框架，类似于基于Hadoop的Pig框架，让开发更加便利和高效。 8.spark 数据准实时计算 -> scala语言Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎。Spark是UC Berkeley AMP lab (加州大学伯克利分校的AMP实验室)所开源的类Hadoop MapReduce的通用并行框架，Spark，拥有Hadoop MapReduce所具有的优点；但不同于MapReduce的是——Job中间输出结果可以保存在内存中，从而不再需要读写HDFS，因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。Spark 是一种与 Hadoop 相似的开源集群计算环境，但是两者之间还存在一些不同之处，这些有用的不同之处使 Spark 在某些工作负载方面表现得更加优越，换句话说，Spark 启用了内存分布数据集，除了能够提供交互式查询外，它还可以优化迭代工作负载。Spark 是在 Scala 语言中实现的，它将 Scala 用作其应用程序框架。与 Hadoop 不同，Spark 和 Scala 能够紧密集成，其中的 Scala 可以像操作本地集合对象一样轻松地操作分布式数据集。9.kafaka 消息队列Kafka是由Apache软件基金会开发的一个开源流处理平台，由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息系统，它可以处理消费者在网站中的所有动作流数据。 这种动作（网页浏览，搜索和其他用户的行动）是在现代网络上的许多…

Jenkins实现java Maven项目自动化
type: item
date: 2020-02-06T14:36:51+08:00
description: shutdown.sh#!/bin/bash echo "Stopping sys-pay" pid=`ps -ef|grep majiameng-0.0.1-SNAPSHOT.jar|grep -v grep|awk '{print $2}'` if [ -n "$pid" ] then echo "kill -9 的pid:" $pid kill -9 $pid fistart.sh#!/bin/bash cp /root/.jenkins/workspace/test/target/majiameng-0.0.1-SNAPSHOT.jar /home1/wwwroot/test BUILD_ID=dontKillMe nohup java -jar majiameng-0.0.1-SNAPSHOT.jar >/home1/logs/test.log 2>&1 &

大数据工程师（高级）复习题
type: item
date: 2019-12-27T16:20:15+08:00
description: 第一部分：选择题 1、下列有关 Excel 工作表命名的说法中,正确的是( C) A、工作表的名字只能以字母开头 B、同一个工作簿可以存在两个同名的工作表 C、工作表的命名应该“见名知义” D、工作簿默认的工作表名称为 Book1 2、下列有关 Excel 工作表单元格的说法中,错误的是( B) A、每个单元格都有固定的地址 B、同列不同单元格的宽度可以不同 C、若干单元格构成工作表 D、同列不同单元格可以选择不同的数字分类 3、下列关于 Excel 公式或函数的说法中,错误的是（D ） A、公式中的乘、除号分别用*、/表示 B、公式复制后,被引用的地址有可能变化 C、公式必须以“=”号开头 D、函数“MAX(A1:C3)”引用了 4 个单元格 4、用鼠标拖放操作复制单元格数据时必须同时按住( C) A、 B、 C、 D、 5、在 Exce1 工作表中,每个单元格都有唯一的编号叫地址,地址的使用方法是(B ) A、字母+数字 B、列标+行号 C、数字+字母 D、行号+列标 6、在 Exce1 操作中,假设 A1,B1,C1,D1 单元分别为 2,3,7,3,则 SUM(A1:C1)/D1 的值 为 （D ） A、15 B、18 C、3 D、4 7、Exce1 中有多个常用的简单函数,其中函数 AVERAGE(区域)的功能是（ B） A、求区域内数据的个数 B、求区城内所有数字的平均值 C、求区城内数字的和 D、返回函数的最大值 8、如果用预置小数的方法输入数据时,当设定小数位数是“2”时,输入 12345 表示 （D ） A、1234500 B、123.45 C、12345 D、12345.00 9、在 EXCEL 中,可使用（ B）中的命令,给选定的单元格加边框 A、视图菜单 B、格式菜单 C、工具菜单 D、窗口菜单 10、在 EXCEL 中,如果我们只需要数据列表中记录的一部分时,可以使用 EXCEL 提 供的（B ）功能 A、排序 B、自动筛选 C、分类汇总 D、以上全部 11、在关系型数据库中储蓄所有多个储户，储户在多个储蓄所存取款，储蓄所与 储户之间是 (D ) A、一对一的联系 B、一对多的联系 C、多对一的联系 D、多对多的联系 12、使用 SQL 语句进行分组检索时，为了去掉不满足条件的分组，应当 （B ） A、使用 WHERE 子句 B、在 GROUP BY 后面使用 HAVING 子句 C、先使用 WHERE 子句，再使用 HAVING 子句 D、先使用 HAVING 子句，再使用 WHERE 子句 13、在 SQL 语句中，与表达式"仓库号 NOT IN（"wh1","wh2"） 功能相同的表 达式是（D ） A、仓库号="wh1" AND 仓库号="wh2"B、仓库号!="wh1" OR 仓库号！= "wh2" C、仓库号="wh1" OR 仓库号="wh2" D、仓库号!="wh1" AND 仓库号!="wh2" 14、设有图书管理数据库： 图书(总编号C(6),分类号C(8),书名C(16),作者C(6),出版单位C(20),单价N(6,2)) 读者(借书证号 C(4),单位 C(8),姓名 C(6),性别 C(2),职称 C(6),地址 C(20)) 借阅(借书证号 C(4),总编号 C(6),借书日期 D(8)) 对于图书管理数据库，分别求出各个单位当前借阅图书的读者人次。下面的 SQL 语句正确的是 （A ） SELECT 单位,______ FROM 借阅,读者 WHERE;借阅.借书证号=读者.借书证号 __ A、COUNT(借阅.借书证号) ，GROUP BY 单位 B、SUM(借阅.借书证号) ，GROUP BY 单位 C、COUNT(借阅.借书证号)， ORDER BY 单位 D、COUNT(借阅.借书证号) ，HAVING 单位 15、在 EXCEL 中,公式输入完后应按（A ）A、ENTER B、CTRL+ENTER C、SHIFT+ENTER D、CTRL+SHIFT+ENTER 16、EXCEL 的主要功能有（B ） A、电子表格、文字处理、数据库 B、电子表格、图表、数据库 C、工作表、工作簿、图表 D、电子表格、工作簿、数据库 17、在 EXCEL 工作表中,当插入行或列时,后面的行或列将向(A )方向自动移动 A、向下或向右 B、向下或向左 C、向上或向右 D、向上或向左 18、在 EXCEL 中，创建公式的操作步骤有：①在编辑栏键入“=”；②键入公式； ③按 ENTER 键；④选择需要建立公式的单元格；其正确的顺序是（C ） A、①②③④ B、④①③② C、④①②③ D、④③①② 19、在 EXCEL 中,当数据超过单元格的列宽，在单元格中显示的一组符号是（B ） A…

Thymeleaf3 模版引擎使用
type: item
date: 2019-12-23T11:14:47+08:00
description: Thymeleaf3语法详解Thymeleaf是Spring boot推荐使用的模版引擎，除此之外常见的还有Freemarker和Jsp。Jsp应该是我们最早接触的模版引擎。而Freemarker工作中也很常见（Freemarker教程）。今天我们从三个方面学习Thymeleaf的语法：有常见的TH属性，四种标准表达式用法，在SpringBoot中的应用。还在等什么，一起来学吧！技术：Thymeleaf，SpringBoot文章目录结构：一、th属性常用th属性解读html有的属性，Thymeleaf基本都有，而常用的属性大概有七八个。其中th属性执行的优先级从1~8，数字越低优先级越高。一、th:text ：设置当前元素的文本内容，相同功能的还有th:utext，两者的区别在于前者不会转义html标签，后者会。优先级不高：order=7二、th:value：设置当前元素的value值，类似修改指定属性的还有th:src，th:href。优先级不高：order=6三、th:each：遍历循环元素，和th:text或th:value一起使用。注意该属性修饰的标签位置，详细往后看。优先级很高：order=2四、th:if：条件判断，类似的还有th:unless，th:switch，th:case。优先级较高：order=3五、th:insert：代码块引入，类似的还有th:replace，th:include，三者的区别较大，若使用不恰当会破坏html结构，常用于公共代码块提取的场景。优先级最高：order=1六、th:fragment：定义代码块，方便被th:insert引用。优先级最低：order=8七、th:object：声明变量，一般和*{}一起配合使用，达到偷懒的效果。优先级一般：order=4八、th:attr：修改任意属性，实际开发中用的较少，因为有丰富的其他th属性帮忙，类似的还有th:attrappend，th:attrprepend。优先级一般：order=5常用th属性使用使用Thymeleaf属性需要注意点以下五点：一、若要使用Thymeleaf语法，首先要声明名称空间： xmlns:th="//www.thymeleaf.org"二、设置文本内容 th:text，设置input的值 th:value，循环输出 th:each，条件判断 th:if，插入代码块 th:insert，定义代码块 th:fragment，声明变量 th:object三、th:each 的用法需要格外注意，打个比方：如果你要循环一个div中的p标签，则th:each属性必须放在p标签上。若你将th:each属性放在div上，则循环的是将整个div。四、变量表达式中提供了很多的内置方法，该内置方法是用#开头，请不要与#{}消息表达式弄混。五、th:insert，th:replace，th:include 三种插入代码块的效果相似，但区别很大。 Thymeleaf 语法 ITDragon Thymeleaf 语法 ID: TH: DE: 后台给负责给变量赋值，和跳转页面。import com.itdragon.entities.ThObject; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @Controller public class ThymeleafController { @RequestMapping("thymeleaf") public String thymeleaf(ModelMap map) { map.put("thText", "th:text 设置文本内容 加粗"); map.put("thUText", "th:utext 设置文本内容 加粗"); map.put("thValue", "thValue 设置当前元素的value值"); map.put("thEach", Arrays.asList("th:each", "遍历列表")); map.put("thIf", "msg is not null"); map.put("thObject", new ThObject(1L, "th:object", "用来偷懒的th属性")); return "grammar/thymeleaf"; } …

大数据分析师（高级）复习题
type: item
date: 2019-12-19T10:09:18+08:00
description: 第一部分：选择题 1、下列有关 Excel 工作表命名的说法中,正确的是(C )A、工作表的名字只能以字母开头 B、同一个工作簿可以存在两个同名的工作表 C、工作表的命名应该“见名知义” D、工作簿默认的工作表名称为 Book1 2、下列有关 Excel 工作表单元格的说法中,错误的是(B ) A、每个单元格都有固定的地址 B、同列不同单元格的宽度可以不同 C、若干单元格构成工作表 D、同列不同单元格可以选择不同的数字分类 3、下列关于 Excel 公式或函数的说法中,错误的是（D） A、公式中的乘、除号分别用*、/表示 B、公式复制后,被引用的地址有可能变化 C、公式必须以“=”号开头 D、函数“MAX(A1:C3)”引用了 4 个单元格 4、用鼠标拖放操作复制单元格数据时必须同时按住(C ) A、 B、 C、 D、 5、在 Exce1 工作表中,每个单元格都有唯一的编号叫地址,地址的使用方法是( B) A、字母+数字 B、列标+行号 C、数字+字母 D、行号+列标 6、在 Exce1 操作中,假设 A1,B1,C1,D1 单元分别为 2,3,7,3,则 SUM(A1:C1)/D1 的值 为 （ D） A、15 B、18 C、3 D、4 7、Exce1 中有多个常用的简单函数,其中函数 AVERAGE(区域)的功能是（B ） A、求区域内数据的个数 B、求区城内所有数字的平均值 C、求区城内数字的和 D、返回函数的最大值 8、如果用预置小数的方法输入数据时,当设定小数位数是“2”时,输入 12345 表示 （ D） A、1234500 B、123.45 C、12345 D、12345.00 9、在 EXCEL 中,可使用（ B）中的命令,给选定的单元格加边框 A、视图菜单 B、格式菜单 C、工具菜单 D、窗口菜单 10、在 EXCEL 中,如果我们只需要数据列表中记录的一部分时,可以使用 EXCEL 提 供的（B ）功能 A、排序 B、自动筛选 C、分类汇总 D、以上全部 11、在关系型数据库中储蓄所有多个储户，储户在多个储蓄所存取款，储蓄所与 储户之间是 (D ) A、一对一的联系 B、一对多的联系 C、多对一的联系 D、多对多的联系 12、使用 SQL 语句进行分组检索时，为了去掉不满足条件的分组，应当 （B ） A、使用 WHERE 子句 B、在 GROUP BY 后面使用 HAVING 子句 C、先使用 WHERE 子句，再使用 HAVING 子句 D、先使用 HAVING 子句，再使用 WHERE 子句 13、在 SQL 语句中，与表达式"仓库号 NOT IN（"wh1","wh2"） 功能相同的表 达式是（D ） A、仓库号="wh1" AND 仓库号="wh2" B、仓库号!="wh1" OR 仓库号！= "wh2" C、仓库号="wh1" OR 仓库号="wh2" D、仓库号!="wh1" AND 仓库号!="wh2" 14、设有图书管理数据库： 图书(总编号C(6),分类号C(8),书名C(16),作者C(6),出版单位C(20),单价N(6,2)) 读者(借书证号 C(4),单位 C(8),姓名 C(6),性别 C(2),职称 C(6),地址 C(20)) 借阅(借书证号 C(4),总编号 C(6),借书日期 D(8)) 对于图书管理数据库，分别求出各个单位当前借阅图书的读者人次。下面的 SQL 语句正确的是 （ A ） SELECT 单位,______ FROM 借阅,读者 WHERE;借阅.借书证号=读者.借书证号 __ A、COUNT(借阅.借书证号) ，GROUP BY 单位 B、SUM(借阅.借书证号) ，GROUP BY 单位 C、COUNT(借阅.借书证号)， ORDER BY 单位 D、COUNT(借阅.借书证号) ，HAVING 单位 15、在 EXCEL 中,公式输入完后应按（ A） A、ENTER B、CTRL+ENTER C、SHIFT+ENTER D、CTRL+SHIFT+ENTER 16、EXCEL 的主要功能有（ B） A、电子表格、文字处理、数据库 B、电子表格、图表、数据库 C、工作表、工作簿、图表 D、电子表格、工作簿、数据库 17、在 EXCEL 工作表中,当插入行或列时,后面的行或列将向(A )方向自动移动 A、向下或向右 B、向下或向左 C、向上或向右 D、向上或向左 18、在 EXCEL 中，创建公式的操作步骤有：①在编辑栏键入“=”；②键入公式； ③按 ENTER 键；④选择需要建立公式的单元格；其正确的顺序是（C ） A、①②③④ B、④①③② C、④①②③ D、④③①② 19、在 EXCEL 中,当数据超过单元格的列宽，在单元格中显示的一组符号是（ B） …

freemarker中list的创建以及list的遍历循环
type: item
date: 2019-10-24T14:51:13+08:00
description: 取得list的长度：${list?size} 用?size不是用?length${list?size}freemarker中list的遍历循环<#if list?? && (list?size gt 0)> <#list list as data> 名称:${data.name!} </#list> </#if>list中有object,获取object的值<#if lists?? && lists.tag_key?? && (tagliststag_key?size) gt 0 > <#list 0..lists.tag_key?size-1 as i> ${lists.tag_key[i]} ${lists.tag_url[i]} </#list> <#else>

java 后台调用友盟推送 如何设置ios 的 title?
type: item
date: 2019-09-29T15:22:22+08:00
description: 查看官方友盟推送文档文档的意思我一开始也没看懂，后来发现这里可能是这个意思：你可以传进来字符串或者json串，如果是字符串，UMeng那边就默认它是内容，如果是json串的话，格式要像它给的那样，UMeng那边就会解析你传进来的东西。这里，如果想设置title，就把title和body封装成json串，在你程序里应用的sdk中重写setAlert方法，像这样： public void setAlert(JSONObject token) throws Exception { setPredefinedKeyValue("alert", token); }之后再把你封装的json串传进来就可以了。像这样：JSONObject alert = new JSONObject(); alert.put("title",ticker); alert.put("subtitle",title); alert.put("body",content); broadcast.setAlert(alert);之后就大功告成了，亲测可以用！iOS推送调用的所有参数:{ "appkey":"xx", // 必填，应用唯一标识 "timestamp":"xx", // 必填，时间戳，10位或者13位均可，时间戳有效期为10分钟 "type":"xx", // 必填，消息发送类型,其值可以为: // unicast-单播 // listcast-列播，要求不超过500个device_token // filecast-文件播，多个device_token可通过文件形式批量发送 // broadcast-广播 // groupcast-组播，按照filter筛选用户群, 请参照filter参数 // customizedcast，通过alias进行推送，包括以下两种case: // - alias: 对单个或者多个alias进行推送 // - file_id: 将alias存放到文件后，根据file_id来推送 "device_tokens":"xx", // 当type=unicast时, 必填, 表示指定的单个设备 // 当type=listcast时, 必填, 要求不超过500个, 以英文逗号分隔 "alias_type": "xx", // 当type=customizedcast时, 必填 // alias的类型, alias_type可由开发者自定义, 开发者在SDK中 // 调用setAlias(alias, alias_type)时所设置的alias_type "alias":"xx", // 当type=customizedcast时, 选填(此参数和file_id二选一) // 开发者填写自己的alias, 要求不超过500个alias, 多个alias以英文逗号间隔 // 在SDK中调用setAlias(alias, alias_type)时所设置的alias "file_id":"xx", // 当type=filecast时，必填，file内容为多条device_token，以回车符分割 // 当type=customizedcast时，选填(此参数和alias二选一) // file内容为多条alias，以回车符分隔。注意同一个文件内的alias所对应 // 的alias_type必须和接口参数alias_type一致。 // 使用文件播需要先调用文件上传接口获取file_id，参照"2.4文件上传接口" "filter":{}, // 当type=groupcast时，必填，用户筛选条件，如用户标签、渠道等，参考附录G。 "payload": // 必填，JSON格式，具体消息内容(iOS最大为2012B) { "aps": // 必填，严格按照APNs定义来填写 { "alert":""/{ // 当content-available=1时(静默推送)，可选; 否则必填。 // 可为JSON类型和字符串类型 "title":"title", "subtitle":"subtitle", "body":"body" } "badge": xx, // 可选 "sound": "xx", // 可选 "content-available":1 // 可选，代表静默推送 "category": "xx", // 可选，注意: ios8才支持该字段。 }, "key1":"value1", // 可选，用户自定义内容, "d","p"为友盟保留字段， // key不可以是"d","p" "key2":"value2", ... }, "policy": // 可选，发送策略 { "start_time":"xx", // 可选，定时…

hive 搭建和使用
type: item
date: 2019-09-18T22:34:53+08:00
description: 1.首先去hive.apache.org 官网去下载对应版本的gz包2.解压缩gz tar -zxvf xxxx.tar.gz -C /usr/local/webserver3.进入 config 创建hive-site.xml 文件增加<configuration> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</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>root</value> <description>password to use against metastore database</description> </property> </configuration>4.将 hive 的 lib 中的 jline.2.12.jar 替换掉 hadoop2.6.4/share/hadoop/yarn/lib/jline.0.94.jar5. 执行命令 初始化 mysql的 hive库./schematool -dbType mysql -initSchema

HBASE的特性以及客户端读取数据流程
type: item
date: 2019-09-18T22:30:05+08:00
description: HBASE的特性Hbase 客户端读取数据流程

Flume 简单使用和搭建
type: item
date: 2019-09-18T22:24:37+08:00
description: 1.解压flume 到/usr/local/webserver/文件夹下2.自定义 .config 名字随意起定义三大组件的名称ag1.sources = source1 ag1.sinks = sink1 ag1.channels = channel1配置source组件ag1.sources.source1.type = spooldir #行为特点是 只要目录出现新的日志文件 就会读取 ag1.sources.source1.spoolDir = /root/log/ ag1.sources.source1.fileSuffix=.FINISHED采集数据一行的最大Kag1.sources.source1.deserializer.maxLineLength=5120 配置sink组件ag1.sinks.sink1.type = hdfs ag1.sinks.sink1.hdfs.path =hdfs://hdp-01:9000/access_log/%y-%m-%d/%H-%M #文件夹路径 ag1.sinks.sink1.hdfs.filePrefix = app_log # 前缀 ag1.sinks.sink1.hdfs.fileSuffix = .log #后缀 ag1.sinks.sink1.hdfs.batchSize= 100 #多少条数据刷一次hdfs ag1.sinks.sink1.hdfs.fileType = DataStream #文件类型 ag1.sinks.sink1.hdfs.writeFormat =Text #写到hdfs上 用Text ## roll：滚动切换：控制写文件的切换规则 ag1.sinks.sink1.hdfs.rollSize = 512000 ## 按文件体积（字节）来切 500K 切切一次 ag1.sinks.sink1.hdfs.rollCount = 1000000 ## 按event条数切 按照多少条记录切一次 ag1.sinks.sink1.hdfs.rollInterval = 60 ## 按时间间隔切换文件 60秒切一次 ## 控制生成目录的规则 ag1.sinks.sink1.hdfs.round = true #是否切换目录 ag1.sinks.sink1.hdfs.roundValue = 10 #10分组切一次 ag1.sinks.sink1.hdfs.roundUnit = minute #分钟 ag1.sinks.sink1.hdfs.useLocalTimeStamp = true #使用本地的时间戳取时间channel组件配置ag1.channels.channel1.type = memory ag1.channels.channel1.capacity = 500000 ## event条数 容量 50W条 ag1.channels.channel1.transactionCapacity = 600 ##flume事务控制所需要的缓存容量600条event绑定source、channel和sink之间的连接ag1.sources.source1.channels = channel1 ag1.sinks.sink1.channel = channel1启动 flumebin/flume-ng agent -c conf/ -f dir-hdfs.conf -n ag1 -Dflume.root.logger=INFO,console-c 配置文件目录-f 采集文件配置-n ag1-Dflume.root.logger=INFO,console 打印 日志到控制台配置2tail-hdfs.conftail-hdfs.conf用tail命令获取数据，下沉到hdfs启动命令：bin/flume-ng agent -c conf -f conf/tail-hdfs.conf -n a1 # Name the components on this agent a1.sources = r1 a1.sinks = k1 a1.channels = c1 # Describe/configure the source a1.sources.r1.type = exec a1.sources.r1.command = tail -F /root/app_weichat_login.log # Describe the sink agent1.sinks.sink1.type = hdfs agent1.sinks.sink1.hdfs.path =hdfs://hdp20-01:9000/app_weichat_login_log/%y-%m-%d/…