tonglin0325的个人主页

wherehows踩坑记录

wherehows是Linkedin开源的大数据治理框架,提供了元数据管理,数据血缘,数据预览,集成多种数据源的功能,最近在进行调研工作

类似的框架有Netflix的metacat,这个两个开源项目都是坑不少,目前还在踩坑阶段中…由于网上关于这两个项目的文章有价值,本文希望能对你有帮助

其他公司也有很多类似的数据发现系统,参考:Data Discovery Platforms and Their Open Source Solutions

 

首先的坑是项目文档不统一的问题,项目首页的文档和get-start的文档不一致,get-start的文档比较首页的文档步骤要多不少

1
2
https://github.com/linkedin/WhereHows

 

1
2
https://github.com/linkedin/WhereHows/blob/master/wherehows-docs/getting-started.md

 wherehows提供了VM和quick start版本,我根本就没有去看这个版本,直接尝试了从源码编译

1.官方的guide第一步是让你创建mysql的用户和密码

全文 >>

elephant-bird学习笔记

elephant-bird是Twitter的开源项目,项目的地址为 https://github.com/twitter/elephant-bird

该项目是Twitter为LZO,thrift,protocol buffer相关的hadoop InputFormats, OutputFormats, Writables, Pig加载函数, Hive SerDe, HBase二级索引等编写的库

1
2
mvn clean install -U -Dprotobuf.version=2.5.0 -DskipTests=true

mvn package的时候需要签名

1
2
gpg --gen-key

以及需要安装apache Thrift和Protocol Buffers

thrift安装参考

1
2
https://www.cnblogs.com/tonglin0325/p/10190050.html

PB安装参考

1
2
https://www.cnblogs.com/tonglin0325/p/13685527.html

全文 >>

go学习笔记——casbin权限管理

1.casbin简介

casbin是一个可用于Golang, Java, C/C++, Node.js, Javascript, PHP, Laravel, Python, .NET (C#), Delphi, Rust, Ruby, Lua (OpenResty), Dart (Flutter)和Elixir的授权库。

在golang web中可以使用casbin实现RBAC权限管理,类似java spring security。

官网:https://casbin.org/zh/

casbin支持多种访问模型,如ACL, RBAC, ABAC等,访问控制模型是基于PERM元模型 (Policy, Effect, Request, Matchers) 压缩而成的一个CONF文件。

casbin还支持多种策略存储方式,比如文件,MySQL、Postgres、Oracle到MongoDB、Redis、Cassandra、AWS S3等数十种数据库。参考:https://casbin.org/zh/docs/adapters/

casbin还可以通过middleware和多种语言的web框架进行集成,比如golang的Gin,Kratos等。参考:https://casbin.org/zh/docs/middlewares

2.casbin和kratos集成

可以参考kratos的example中的casbin项目:https://github.com/go-kratos/examples/tree/main/casbin

在这个例子中,作者定义了3种角色,分别具有不同的权限

  • admin:管理员角色,具有所有权限,显示所有标签页
  • moderator:普通用户角色,具有部分权限,无权限访问User标签页,无法看到Admin标签页
  • user:普通用户角色,具有一些权限,无权限访问User标签页,无法看到Admin和Moderator标签页

admin用户

全文 >>

Ubuntu下Ansible安装和使用

Ansible是一个批量部署的工具

参考:Ansible中文权威指南

1.安装

1
2
3
4
5
sudo apt-get install software-properties-common
sudo apt-add-repository ppa:ansible/ansible
sudo apt-get update
sudo apt-get install ansible

2.在/etc/ansible/hosts文件中添加服务器的ip

1
2
vim /etc/ansible/hosts

3.需要将自己机器的/.ssh/目录下公钥,即pub文件,添加到服务器的 `/.ssh/authorized_keys `文件中

1
2
vim ~/.ssh/authorized_keys

例如

1
2
3
4
[XXXX]
xx.xx.xx.[12:35] ansible_ssh_port=xxx
xx.xx.xx.[66:115] ansible_ssh_port=xxx

全文 >>

Logstash安装和使用

Logstash 是开源的服务器端数据处理管道,能够同时 从多个来源采集数据、转换数据,然后将数据发送到您最喜欢的 “存储库” 中。(我们的存储库当然是 Elasticsearch。)

作用:集中、转换和存储数据

官方网站:

1
2
https://www.elastic.co/cn/products/logstash

一个民间的中文Logstash最佳实践:

1
2
https://doc.yonyoucloud.com/doc/logstash-best-practice-cn/index.html

 

1.下载Logstash,版本为6.2.4,下载地址

1
2
https://artifacts.elastic.co/downloads/logstash/logstash-6.2.4.tar.gz

2.解压到目录

3.启动Logstash进程,Hello World Demo

1
2
bin/logstash -e 'input { stdin { } } output { stdout {} }'

1
2
bin/logstash -e 'input{stdin{}}output{stdout{codec=>rubydebug}}'

输入:Hello World

输出:

全文 >>

Centos7.0下Nexus私服搭建

1.下载nexus

1
2
wget https://sonatype-download.global.ssl.fastly.net/nexus/oss/nexus-2.11.2-03-bundle.tar.gz

2.解压,会出现两个目录,nexus-2.11.2-03是服务  sonatype-work是私有库目录

1
2
3
mkdir nexus
tar -zxvf nexus-2.11.2-03-bundle.tar.gz -C ./nexus

3.修改配置,在nexus-2.11.2-03/bin目录下修改nexus文件

1
2
3
NEXUS_HOME=“安装目录”
RUN_AS_USER=xxx

4.修改端口,nexus-2.11.2-03/conf修改nexus.properties文件

1
2
application-port=XXX

5.启动

1
2
3
4
./bin/nexus start
Starting Nexus OSS...
Started Nexus OSS.

全文 >>

使用MegaCli监控Linux硬盘

**1.**首先查看机器是否使用的是MegaRAID卡

1
2
3
dmesg | grep RAID
[ 6.932741] scsi host0: Avago SAS based MegaRAID driver

**2.**添加 megaraid 源:

修改 /etc/apt/sources.list 在末尾添加

1
2
deb http://hwraid.le-vert.net/ubuntu precise main

然后执行:

1
2
3
apt-get update
apt-get install megacli megactl megaraid-status

如果执行提示 GPG 错误,需要执行如下命令添加证书:

1
2
wget -O - http://hwraid.le-vert.net/debian/hwraid.le-vert.net.gpg.key | sudo apt-key add -

然后再次执行:

1
2
apt-get install megacli megactl megaraid-status

**3.**使用megacli命令进行一些简单的查询

显示所有RAID级别、设置及逻辑盘信息

全文 >>

使用SMART监控Ubuntu

参考:完全用 GNU/Linux 工作 - 29. 檢測硬碟 S.M.A.R.T. 健康狀態

1.安装

1
2
sudo apt-get install smartmontools

2.查看硬盘的参数,需要获得Root权限

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
sudo smartctl -i /dev/sda

smartctl 6.5 2016-01-24 r4214 [x86_64-linux-4.4.0-122-generic] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Family: Samsung based SSDs
Device Model: Samsung SSD 850 EVO 250GB
Serial Number: S3LCNF0J807262K
LU WWN Device Id: 5 002538 d42253d35
Firmware Version: EMT03B6Q
User Capacity: 250,059,350,016 bytes [250 GB]
Sector Size: 512 bytes logical/physical
Rotation Rate: Solid State Device
Form Factor: 2.5 inches
Device is: In smartctl database [for details use: -P show]
ATA Version is: ACS-2, ATA8-ACS T13/1699-D revision 4c
SATA Version is: SATA 3.1, 6.0 Gb/s (current: 6.0 Gb/s)
Local Time is: Mon May 7 10:14:29 2018 CST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

3.如果使用下面的Python脚本来调用该命令的时候,是需要获得Root权限的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/usr/bin/python
# !-*- coding:utf8 -*-

import os


def main():
dir = "~/桌面/test.sh"
result = os.system("sh ~/桌面/test.sh")
# print result


if __name__ == '__main__':
main()

可以使用下面的方法来实现免输入密码,使用 sudo visudo 命令对/etc/sudoers文件增加下面设置

1
2
lintong  ALL=(ALL) NOPASSWD: /usr/sbin/smartctl

 注意不要使用vim等工具来进行修改,无法修改错的话可能会出现下面的错误

全文 >>

Kibana学习笔记——安装和使用

1.首先下载Kibana

1
2
https://www.elastic.co/downloads

2.解压

1
2
tar -zxvf kibana-6.2.1-linux-x86_64.tar.gz -C ~/software/

3.修改配置,在config文件夹下面修改kibana.yml

1
2
3
4
5
#配置本机ip
server.host: "127.0.0.1"
#配置es集群url
elasticsearch.url: "http://127.0.0.1:9200"

4.启动

1
2
./bin/kibana

5.访问web

1
2
http://localhost:5601/app/kibana

全文 >>

open-falcon实现邮件报警

1.请安装好Go的环境,参考上一篇open-falcon的安装博文

2.安装** mail-provider**

1
2
https://github.com/open-falcon/mail-provider

安装方法

1
2
3
4
5
6
7
8
cd $GOPATH/src
mkdir github.com/open-falcon/ -p
cd github.com/open-falcon/
git clone https://github.com/open-falcon/mail-provider.git
cd mail-provider
go get ./...
./control build

 编译成功之后,修改cfg.json文件相关信息,使用

1
2
./control start

 在cfg.json里面使用的163邮箱的smtp服务,需要开启客户端授权码,如果提示:发送数量超过配额,请过24小时再请求手机验证码

 

全文 >>