一个好用的分布式任务调度平台Xxl-Job

https://github.com/xuxueli/xxl-job

http://www.xuxueli.com/xxl-job/#/

admin

xxl-job-admin打包生成war文件之后,需要放到tomcat8的webapps目录下,然后启动tomcat.

excutor

在目录xxl-job-executor-samples下。如果是用springboot方式,在xxl-job-executor-sample-springboot目录下使用mvn package 打包,生成xxl-job-executor-sample-springboot-1.9.1.jar。

注意点

下载好源码之后,在相应的目录下使用mvn package打包。

日志的路径需要修改,在src/main/resources/application.properties文件中。
执行器管理->执行器列表中的AppName要和registryKey也就是配置文件中的xxl.job.executor.appname相同。

Linux一些命令

Linux命令eval的用法

Shell脚本中实现切换用户并执行命令操作

查看linux中某个端口(port)是否被占用
1.使用lsof
lsof -i:端口号查看某个端口是否被占用
2.使用netstat
使用netstat -anp|grep 80

linux expect详解(ssh自动登录)

Linux下su与su -命令的本质区别

Linux shell日期的加减和格式化

1
d=$(date +%Y%m%d  --date='1 days ago ')

Linux shell单引号内的参数

1
d=$(date +%Y%m%d  --date=''${1}' days ago ')

vim 取消行号

1
set nonu

grep的用法

1
grep --color -n -i -r 'dataThatYouWhatToFind' *

-n 显示在文件中的第几行
-i 忽略大小写
-r 搜索包含子目录

grep如何递归目录并在指定类型文件中查找

1
find . -name '*.xml' | xargs grep 'sometext'

ls按照创建时间排序

1
man ls
1
-c     with -lt: sort by, and show, ctime (time of last modification of file status information); with -l: show ctime and sort by name; otherwise: sort by ctime, newest first
1
ls -ltc

linux中的日期加减

1
d=$(date +%Y-%m -d '-1 month')

Autojump

一个可以在 Linux 文件系统快速导航的高级 cd 命令
对于linux系统:

1
2
echo '. /usr/share/autojump/autojump.sh' >> /etc/profile
source /etc/profile

删除文件中的空行或者空白行

1
sed '/^ *$/d' file1

Java错误记录

一. Error: JAVA_HOME Is Not Set and Could Not Be Found

使用hdfs用户,通过crontab配置了定时任务,定时脚本调用了python脚本,Python脚本执行了Hadoop命令。原crontab如下

1
2 09 * * * cd /data/apps/py_hdfs2cos; ./start.sh >> log/crontab.log 2>&1

改为如下命令即可:

1
2 09 * * * cd /data/apps/py_hdfs2cos; source /etc/profile; ./start.sh >> log/crontab.log 2>&1

其中增加了source /etc/profile;

为Hexo主题Landscape添加livere(来必力)评论支持

From http://www.zhoujy.me/2017/07/16/livere/

注册 livere

livere 有两个版本:

  • City 版:是一款适合所有人使用的免费版本
  • Premium 版:是一款能够帮助企业实现自动化管理的多功能收费版本

使用City版可以满足基本需求了。
安装,获取livere安装代码:https://livere.com/insight/myCode。

添加livere插件

首先在 themes/landscape/_config.yml 文件中添加如下配置:

1
livere: true

然后\layout_partial\post目录下添加livere.ejs,把livere安装代码复制进去,文件内容如下,其中data-uid就是你自己的data-uid。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<!-- 来必力City版安装代码 -->
<div id="lv-container" data-id="city" data-uid="your data-id">
<script type="text/javascript">
(function(d, s) {
var j, e = d.getElementsByTagName(s)[0];

if (typeof LivereTower === 'function') { return; }

j = d.createElement(s);
j.src = 'https://cdn-city.livere.com/js/embed.dist.js';
j.async = true;

e.parentNode.insertBefore(j, e);
})(document, 'script');
</script>
<noscript>为正常使用来必力评论功能请激活JavaScript</noscript>
</div>
<!-- City版安装代码已完成 -->

最后在layout_partial\article.ejs中<% if (!index && post.comments){ %>后面添加如下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14

<% if (theme.livere){ %>

<%- partial('post/livere', {

key: post.slug,

title: post.title,

url: config.url+url_for(post.path)

}) %>

<% } %>

至此,为landscape主题添加livere评论插件完成。
效果见下方评论栏,觉得还行的可以留言啊。

Centos6.5安装elasticsearch-6.2.4遇到的问题

1
2
3
4
5
ERROR: [4] bootstrap checks failed
[1]: max file descriptors [65535] for Elasticsearch process is too low, increase to at least [65536]
[2]: max number of threads [1024] for user [xiao] is too low, increase to at least [4096]
[3]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
[4]: system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk

问题一

1
2
3
4
5
vim /etc/security/limits.conf
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096

Read More

Centos6.5安装jdk8

1 下载
download

2 解压

1
2
cd /data/software/
tar -zxvf jdk-8u171-linux-x64.tar.gz

3 配置

1
2
3
4
vi /etc/profile

export JAVA_HOME=/data/software/jdk1.8.0_171
export PATH=$PATH:$JAVA_HOME/bin:

4 使其生效

1
source /etc/profile

5 检查

1
2
3
4
[root@server1 jdk8]# java -version
java version "1.8.0_144"
Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)

Spark Read and Write to CSV

Read

1
2
3
4
5
val logs = spark.read.csv("/tmp/sousuo")
or
val logs = spark.read.option("delimiter", "\t").csv("/tmp/sousuo")
or
val logs = spark.read.option("delimiter", ",").csv("/tmp/sousuo")

Write

1
2
3
4
5
df
.repartition(1)
.write.format("com.databricks.spark.csv")
.option("header", "true")
.save("mydata.csv")

or coalesce:

1
2
3
4
5
df
.coalesce(1)
.write.format("com.databricks.spark.csv")
.option("header", "true")
.save("mydata.csv")

参考 https://stackoverflow.com/questions/31674530/write-single-csv-file-using-spark-csv