- 浏览: 2187846 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (682)
- 软件思想 (7)
- Lucene(修真篇) (17)
- Lucene(仙界篇) (20)
- Lucene(神界篇) (11)
- Solr (48)
- Hadoop (77)
- Spark (38)
- Hbase (26)
- Hive (19)
- Pig (25)
- ELK (64)
- Zookeeper (12)
- JAVA (119)
- Linux (59)
- 多线程 (8)
- Nutch (5)
- JAVA EE (21)
- Oracle (7)
- Python (32)
- Xml (5)
- Gson (1)
- Cygwin (1)
- JavaScript (4)
- MySQL (9)
- Lucene/Solr(转) (5)
- 缓存 (2)
- Github/Git (1)
- 开源爬虫 (1)
- Hadoop运维 (7)
- shell命令 (9)
- 生活感悟 (42)
- shell编程 (23)
- Scala (11)
- MongoDB (3)
- docker (2)
- Nodejs (3)
- Neo4j (5)
- storm (3)
- opencv (1)
最新评论
-
qindongliang1922:
粟谷_sugu 写道不太理解“分词字段存储docvalue是没 ...
浅谈Lucene中的DocValues -
粟谷_sugu:
不太理解“分词字段存储docvalue是没有意义的”,这句话, ...
浅谈Lucene中的DocValues -
yin_bp:
高性能elasticsearch ORM开发库使用文档http ...
为什么说Elasticsearch搜索是近实时的? -
hackWang:
请问博主,有用solr做电商的搜索项目?
Solr中Group和Facet的用法 -
章司nana:
遇到的问题同楼上 为什么会返回null
Lucene4.3开发之第八步之渡劫初期(八)
备忘和扯一扯最近散仙在工作用到的几个不错的小技术点:
(1)使用shell写了一个根据年份能生成此年份下归档文件目录,精确到年-月-日-小时
谈谈本意:
由于散仙最近是在搞我们平台的搜索日志分析的工作,日志记录的数据是存在我们的Hadoop集群的HDFS上,日志记录的形式,自然也是按照年月日小时这样一个目录存储的,至于为啥这么设计,通过时间维度来准确归档:
好处: 这样在分析数据时,便能任意指定时间范围来分析,最细精确到小时上,最大可按年统计,所以,例如最近1小时,3小时,最近7天,最近一个月,三个月,1年等等时间维度都可以统计,非常灵活。
坏处: 即使在使用了Snappy压缩后,存储使用Flume收集过来的小文件仍然比较多,每个小时下的数据有好多1M,3M,50M类似这样的snappy压缩包,在HDFS上存储过多的小文件会导致NameNode的元数据映射信息倍增,这会占掉更多的内存,所以这样存储,从长久来看,并不是一个好的规划。
是否可以解决?
以散仙来看,解决办法其实也不太难
(1)在Flume写入HDFS的过程中,可以把flume汇总收集的缓冲时间给延长一点,或者把写入大小的阈值给调大,理想情况下,一个小时的数据,最好只压缩成一个大的文件包。
(2)写一个定时合并小文件的程序来把每个小时下的数据合并成一个大的文件,当然这种做法,相当于补救措施了,尽量使用第一种方法,在写入时就解决this problem。
好了,扯的有点多了,下面说正经的,写这个shell的目的,是为了模拟线上的hadoop存储日志的目录结构,便于在测试的hadoop集群上进行各种仿真测试和折腾,因为直接从线上的hadoop导一份完整的数据比较费时,所以就在使用这个脚本在linux上,创建一份,写入一点测试数据,然后上传到HDFS上,就可以进行各种时间的维度的统计测试了。
最后还有一个不错的想法分享给眼前的各位帅哥,美女们,养成归档的好习惯,从现在做起,如果你还在为找以前的某个txt文件,某个excel文件,某个hadoop源码包,某个岛国的avi影片,或某个照片,某个简历等等等等找不到而发愁的时候,是否有种冲动的想法,
“老娘以后再也不乱放东西了,总是害得用的时候找不到了! ”。
那就来吧,这个脚本对你很适合,你只需要稍稍微创新一下,就能改造的非常个性化,比如你在年,月,日,小时目录下,新建了分类很细的目录,对各种常用的文件归档,根据文件后缀名,都建立一个文件夹,在各个文件夹下你还可以继续分类,总之,只有你想不到的,没有做不到的,再到用的时候,你只需要记得你要找的东西后缀名,然后根据大概时间,就能很快find it!
有了这个思路,你就可以自己使用自己擅长的语言的写一个类似这样的程序,技术上,没啥难度,注意下不同的年份中月的天数可能不一样的问题即可。
如果你不会写程序,没关系,自己手动创建目录,也没多困难嘛,以后就可以把排列满满的桌面的文件,定时归档起来了。
脚本源码如下:
最后,在备忘几个shell小知识
(2)将类似2015-01-02 12:33:33 这样的日期,转换成毫秒
(3)将一个毫秒数转换成日期
(4)C风格版的shell的for循环
(5)计算日期差,可以传入小时,天,月等
(6)去掉01,02,类似数字的0,还原成可计算的数字
(7)给单位数字补位,1,2,3,4,5,改成01,02,03,04,05类似
(8)使用seq命令,生成带0序列数字:
(9)使用seq命令,生成范围区间
(10)linux下,查看日历
想了解更多有关电商互联网公司的搜索技术和大数据技术的使用,请欢迎扫码关注微信公众号:我是攻城师(woshigcs)
本公众号的内容是有关搜索和大数据技术和互联网等方面内容的分享,也是一个温馨的技术互动交流的小家园,有什么问题随时都可以留言,欢迎大家来访!
(1)使用shell写了一个根据年份能生成此年份下归档文件目录,精确到年-月-日-小时
谈谈本意:
由于散仙最近是在搞我们平台的搜索日志分析的工作,日志记录的数据是存在我们的Hadoop集群的HDFS上,日志记录的形式,自然也是按照年月日小时这样一个目录存储的,至于为啥这么设计,通过时间维度来准确归档:
好处: 这样在分析数据时,便能任意指定时间范围来分析,最细精确到小时上,最大可按年统计,所以,例如最近1小时,3小时,最近7天,最近一个月,三个月,1年等等时间维度都可以统计,非常灵活。
坏处: 即使在使用了Snappy压缩后,存储使用Flume收集过来的小文件仍然比较多,每个小时下的数据有好多1M,3M,50M类似这样的snappy压缩包,在HDFS上存储过多的小文件会导致NameNode的元数据映射信息倍增,这会占掉更多的内存,所以这样存储,从长久来看,并不是一个好的规划。
是否可以解决?
以散仙来看,解决办法其实也不太难
(1)在Flume写入HDFS的过程中,可以把flume汇总收集的缓冲时间给延长一点,或者把写入大小的阈值给调大,理想情况下,一个小时的数据,最好只压缩成一个大的文件包。
(2)写一个定时合并小文件的程序来把每个小时下的数据合并成一个大的文件,当然这种做法,相当于补救措施了,尽量使用第一种方法,在写入时就解决this problem。
好了,扯的有点多了,下面说正经的,写这个shell的目的,是为了模拟线上的hadoop存储日志的目录结构,便于在测试的hadoop集群上进行各种仿真测试和折腾,因为直接从线上的hadoop导一份完整的数据比较费时,所以就在使用这个脚本在linux上,创建一份,写入一点测试数据,然后上传到HDFS上,就可以进行各种时间的维度的统计测试了。
最后还有一个不错的想法分享给眼前的各位帅哥,美女们,养成归档的好习惯,从现在做起,如果你还在为找以前的某个txt文件,某个excel文件,某个hadoop源码包,某个岛国的avi影片,或某个照片,某个简历等等等等找不到而发愁的时候,是否有种冲动的想法,
“老娘以后再也不乱放东西了,总是害得用的时候找不到了! ”。
那就来吧,这个脚本对你很适合,你只需要稍稍微创新一下,就能改造的非常个性化,比如你在年,月,日,小时目录下,新建了分类很细的目录,对各种常用的文件归档,根据文件后缀名,都建立一个文件夹,在各个文件夹下你还可以继续分类,总之,只有你想不到的,没有做不到的,再到用的时候,你只需要记得你要找的东西后缀名,然后根据大概时间,就能很快find it!
有了这个思路,你就可以自己使用自己擅长的语言的写一个类似这样的程序,技术上,没啥难度,注意下不同的年份中月的天数可能不一样的问题即可。
如果你不会写程序,没关系,自己手动创建目录,也没多困难嘛,以后就可以把排列满满的桌面的文件,定时归档起来了。
脚本源码如下:
#获取当前的年份 y=$1 #year=`date +%Y` #获取当前的月份 #month=`date +%m` for m in `seq -w 12` do #创建月的文件夹 mkdir -p $y/$m #得到每月的最后一天 lastday=`cal $m $y | egrep "28|29|30|31" | tail -1 | awk '{print $NF}'` for d in `seq -w 01 $lastday ` do #创建日的文件夹 mkdir -p $y/$m/$d/ for h in `seq -w 00 23` do #创建小时的文件夹 mkdir -p $y/$m/$d/$h echo "$y年$m月$d日$h小时里的造的数据" >> $y/$m/$d/$h/$y-$m-$d-$h.txt done done #echo $m done echo "创建完毕!"
最后,在备忘几个shell小知识
(2)将类似2015-01-02 12:33:33 这样的日期,转换成毫秒
s2=`date -d "$end" '+%s'`
(3)将一个毫秒数转换成日期
time=`date -d @$timestamp '+%Y-%m-%d %H:%M:%S'`
(4)C风格版的shell的for循环
for (( i=0; i<=10; i++ )) do echo $i done
(5)计算日期差,可以传入小时,天,月等
before=`date '+%Y/%m/%d/%H' -d '-24 hour' `
(6)去掉01,02,类似数字的0,还原成可计算的数字
brb=`echo $brb | sed 's/^0/''/' `
(7)给单位数字补位,1,2,3,4,5,改成01,02,03,04,05类似
ss=`echo $ss | sed 's/^[0-9]$/0&/'`
(8)使用seq命令,生成带0序列数字:
[search@dnode1 checklist]$ seq -w 12 01 02 03 04 05 06 07 08 09 10 11 12 [search@dnode1 checklist]$
(9)使用seq命令,生成范围区间
[search@dnode1 checklist]$ seq -w 12 01 02 03 04 05 06 07 08 09 10 11 12 [search@dnode1 checklist]$
(10)linux下,查看日历
[search@dnode1 checklist]$ cal 2015 2015 January February March Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa 1 2 3 1 2 3 4 5 6 7 1 2 3 4 5 6 7 4 5 6 7 8 9 10 8 9 10 11 12 13 14 8 9 10 11 12 13 14 11 12 13 14 15 16 17 15 16 17 18 19 20 21 15 16 17 18 19 20 21 18 19 20 21 22 23 24 22 23 24 25 26 27 28 22 23 24 25 26 27 28 25 26 27 28 29 30 31 29 30 31 April May June Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa 1 2 3 4 1 2 1 2 3 4 5 6 5 6 7 8 9 10 11 3 4 5 6 7 8 9 7 8 9 10 11 12 13 12 13 14 15 16 17 18 10 11 12 13 14 15 16 14 15 16 17 18 19 20 19 20 21 22 23 24 25 17 18 19 20 21 22 23 21 22 23 24 25 26 27 26 27 28 29 30 24 25 26 27 28 29 30 28 29 30 31 July August September Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa 1 2 3 4 1 1 2 3 4 5 5 6 7 8 9 10 11 2 3 4 5 6 7 8 6 7 8 9 10 11 12 12 13 14 15 16 17 18 9 10 11 12 13 14 15 13 14 15 16 17 18 19 19 20 21 22 23 24 25 16 17 18 19 20 21 22 20 21 22 23 24 25 26 26 27 28 29 30 31 23 24 25 26 27 28 29 27 28 29 30 30 31 October November December Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa 1 2 3 1 2 3 4 5 6 7 1 2 3 4 5 4 5 6 7 8 9 10 8 9 10 11 12 13 14 6 7 8 9 10 11 12 11 12 13 14 15 16 17 15 16 17 18 19 20 21 13 14 15 16 17 18 19 18 19 20 21 22 23 24 22 23 24 25 26 27 28 20 21 22 23 24 25 26 25 26 27 28 29 30 31 29 30 27 28 29 30 31 [search@dnode1 checklist]$
想了解更多有关电商互联网公司的搜索技术和大数据技术的使用,请欢迎扫码关注微信公众号:我是攻城师(woshigcs)
本公众号的内容是有关搜索和大数据技术和互联网等方面内容的分享,也是一个温馨的技术互动交流的小家园,有什么问题随时都可以留言,欢迎大家来访!
发表评论
-
什么是操作系统的虚拟内存?
2019-07-17 10:04 782https://mp.weixin.qq.com/s?__bi ... -
关于Linux进程的基础知识
2018-12-17 15:58 1294### 前言 在计算机里面,一个进程通常指的是一个运行程序的 ... -
小知识之Linux系统中的最大进程数,最大文件描述,最大线程数
2018-01-19 22:16 2034今天来了解一下linux里面的一些小知识: (一)Lin ... -
Nginx配置的一些小功能
2018-01-12 21:28 1531前面的文章,已经介绍 ... -
理解正常代理与反向代理的区别
2017-12-21 09:57 686http://blog.csdn.net/u010454030 ... -
Nginx入门介绍与安装
2017-12-20 21:38 1289### Nginx是什么? Nginx ... -
给centos重新安装yum的base-repo源
2017-12-14 21:06 6238如果自己的centos的系统yum源出现问题了,如何才能修 ... -
如何在centos7上使用shadowsocks配置代理
2016-11-16 16:59 17466作为一名程序员,如 ... -
centos7安装mysql
2016-11-14 16:41 1293centos7的默认yum源已经 ... -
Apache Tez0.7编译笔记
2016-01-15 16:33 2535目前最新的Tez版本是0.8,但还不是稳定版,所以大家还 ... -
Bug死磕之hue集成的oozie+pig出现资源任务死锁问题
2016-01-14 15:52 3841这两天,打算给现有的 ... -
unbutu+mysql的root密码重置方法
2016-01-11 14:16 1265MySQL密码重置策略: 1,停止mysql服务 s ... -
诡异的SSH免密失效
2015-12-31 12:31 2820今天在开发环境,重启了下hadoop,发现log里面竟然打出 ... -
Linux远程ssh脚本执行命令问题
2015-12-04 13:20 3823总结下使用ssh远程执行命令需要注意点: 一般我们会使用s ... -
Apache Pig中如何使用Replace函数
2015-11-17 18:48 1528今天分享一个小案例, ... -
Apache Pig的UDF返回值问题
2015-11-11 16:34 1521今天写了关于Pig的EvalFunc UDF函数,结果一执行 ... -
Linux网络神器之强大的NetCat命令
2015-10-15 21:40 6484名称:netcat命令在linux中别名为nc 作用:支持任意 ... -
vi使用技巧--批量加注释任意符号
2015-08-07 16:25 1326使用vi批量加注释“#”或者是// 等一些符号,看似简单但用处 ... -
使用shell分页读取600万+的MySQL数据脚本
2015-07-15 13:02 2733shell-mysql (1)脚本背景: 由于要在Linux ... -
Pig0.15集成Tez,让猪飞起来
2015-06-29 19:45 18291,Tez是什么? Tez是Hortonworks公司开源 ...
相关推荐
然而,有时用户可能会遇到一个奇怪的现象:查询V$ARCHIVED_LOG视图时,发现归档日志的文件名称为空。这可能是由于多种原因造成的,尤其是在使用ASM(Automatic Storage Management)作为存储解决方案的Oracle RAC...
标题中的“照片的归档重命名处理程序源码”指的是一个专门用于管理和整理照片的软件应用,其核心功能包括照片的归档和批量重命名。这个程序能够帮助用户按照特定的规则有效地组织他们的照片库,使得查找和管理照片变...
另一方面,"plainvoq"可能是一个命令行工具或者插件,专门用于处理音频文件的元数据,如提取音频标题、主播姓名等信息,以便于生成有意义的新文件名。 "命名归档"这一标签表明这个过程不仅涉及简单的重命名,还涉及...
为此,可以使用逻辑运算符如`&&`(表示前一个命令成功后才执行后一个命令)和`||`(表示前一个命令失败时才执行后一个命令)。例如: ```bash cd /path/to/directory && echo "Success" || echo "Failed" ``` ...
嵌入报告插件是Jenkins持续集成系统中的一个扩展工具,专为提升构建报告的可视化效果而设计。它允许用户将各种类型的归档工件,如测试报告、日志文件或者图表,直接在作业的顶级状态页面上进行展示,提供了一种直观...
养成定期整理和归档的习惯,创建有组织的文件夹结构,以便快速定位所需文件。 - 建立文件命名和分类规则,使文件查找更容易。例如,按照日期、项目名称或文件类型进行命名和分组。 - 定期备份重要文件,以防止意外...
### 信息化背景下文书档案在线归档的初步探索 #### 一、文书档案管理信息化的基本概念 文书档案作为记录社会发展历程的重要载体,对于单位的历史沿革、决策过程等有着不可或缺的作用。随着信息技术的进步,传统的...
例如,如果你有一个包含3个元素的数组,并试图访问第4个元素,就会发生越界。为避免这种情况,开发者应该始终在访问数组元素之前检查索引的有效性。此外,可以使用Swift的安全访问语法(如`array[safe: index]`)或...
总的来说,“洛阳契约文书博物馆归档分单文书数据集”是一个综合性的历史资料库,其内容丰富多样,对于研究中国古代社会经济与法律文化具有极高的价值。通过深入挖掘和分析这些数据,我们可以更全面地认识那个时代的...
它提供了一个公平竞争的平台,让更多的平民有机会通过自己的学识和努力改变命运,进而促进了社会的流动性和文化的发展。在长达一千多年的运行中,科举制度逐步形成了较为成熟的考试体系,不仅考察考生的文化知识,也...
"前归档"在IT行业中通常指的是在进行某种操作(如发布、备份或迁移)之前,将数据或项目整理并...在实际工作中,良好的代码管理和归档习惯能帮助开发者更好地协同工作,快速定位和修复问题,以及保护宝贵的代码资产。
例如,一个有效的归档系统应具备以下特点: 1. **分类明确**:根据文件的类型、项目、日期或其他相关标准进行分类,便于查找和管理。 2. **命名规范**:文件命名要清晰明了,避免使用模糊的缩写或无意义的数字,...
Collect Asset的归档功能可以打包整个项目,包括场景文件、贴图和其他依赖项,形成一个完整的档案。这样,即使在不同的电脑上打开,也能确保项目正常运行,避免因资源丢失导致的问题。 安装Collect Asset插件非常...
一个好的档案管理系统应设计为模块化,方便添加新功能或进行维护。使用标准的开发规范和良好的编程习惯有助于系统的长期稳定运行。 通过以上这些技术点的综合应用,我们可以构建出一个功能齐全、易于维护的档案...
以“zhoujiameng_20221215.tar.gz”为例,这代表了一个由周嘉孟在2022年12月15日创建或整理的压缩文件,它采用的是Linux/Unix系统中常见的归档格式——tar,以及gzip的压缩算法。这个文件名遵循了一种常见的命名规范...
在Java编程语言中,将多个小文件合并成一个文件是一个常见的需求,特别是在处理大量数据或者进行文件归档时。这个过程通常称为文件拼接或文件合并。以下将详细讲解如何使用Java来实现这一功能。 首先,我们需要理解...
一个易于使用但高度可扩展的待办事项列表,支持#tags , @people ,截止日期和归档。 触摸和移动友好。 现在有了API! 此待办事项列表当前不支持协作或多用户。 这是一个故意的设计决定,因为我从来不希望别人看到...
所有这些都被整合到一个单一的应用程序中,即一个便携式文件夹,您可以通过将其打包为 ZIP 归档文件或为您的应用程序制作安装程序来轻松分发给最终用户。嵌入的 Web 服务器是 Mongoose 的一个定制版本,该 Web ...
【标题】"takeout-20221120T123441Z-001.zip" 是一个归档文件,通常用于存储多个文件或文件夹以便于传输或备份。这个文件名中的 "takeout" 可能指的是 Google Takeout 服务,这是一个让用户导出其在 Google 各项服务...