tonglin0325的个人主页

Ubuntu16.04安装cuda和pytorch

1.安装cuda

参考:Ubuntu下安装CUDA

pytorch可以不依赖GPU运行,但是如果需要使用NVIDIA的GPU,则需要安装cuda

查看是否安装cuda

1
2
3
4
lintong@master:~$ nvcc -V
程序“nvcc”尚未安装。 您可以使用以下命令安装:
sudo apt install nvidia-cuda-toolkit

查看GPU型号,GPU型号是GTX1050Ti

1
2
3
4
lspci | grep -i nvidia
01:00.0 VGA compatible controller: NVIDIA Corporation GP107 [GeForce GTX 1050 Ti] (rev a1)
01:00.1 Audio device: NVIDIA Corporation GP107GL High Definition Audio Controller (rev a1)

查看是否安装NVIDIA GPU的驱动,驱动的版本是430.64,最高能支持到的cuda版本是10.1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
nvidia-smi
Sun Oct 23 20:27:21 2022
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 430.64 Driver Version: 430.64 CUDA Version: 10.1 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GeForce GTX 105... Off | 00000000:01:00.0 On | N/A |
| 40% 29C P8 N/A / 100W | 370MiB / 4036MiB | 0% Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| 0 1106 G /usr/lib/xorg/Xorg 259MiB |
| 0 28186 G compiz 106MiB |
| 0 28455 G ...AAAAAAAAAAAACAAAAAAAAAA= --shared-files 1MiB |
+-----------------------------------------------------------------------------+

去官方下载runfile来安装cuda

1
2
https://developer.nvidia.com/cuda-toolkit-archive

全文 >>

使用JMeter进行压测

1.下载jmeter

1
2
3
4
https://jmeter.apache.org/download_jmeter.cgi
wget https://dlcdn.apache.org//jmeter/binaries/apache-jmeter-5.4.3.tgz
tar -zxvf apache-jmeter-5.4.3.tgz

2.修改配置成中文

1
2
3
➜  /Users/lintong/software/apache-jmeter-5.4.3/bin $ vim jmeter.properties
language=zh_CN

3.启动

1
2
➜  /Users/lintong/software/apache-jmeter-5.4.3/bin $ sh jmeter

全文 >>

MPP数据仓库简介

MPP(Massively Parallel Processor/大规模并行处理)数据仓库,其属于OLAP(Online analytical processing,联机分析处理)的范畴

其中,ROLAP指的是(Relational OLAP/关系OLAP);MOLAP指的是(Multi-dimensional OLAP/多维OLAP),参考:主流开源OLAP引擎大比拼

ROLAP 的优点和缺点

ROLAP的典型代表是:Presto,Impala,Doris,GreenPlum,Clickhouse,Elasticsearch,Hive,Spark SQL,Flink SQL

数据写入时,ROLAP并未使用像MOLAP那样的预聚合技术;ROLAP收到Query请求时,会先解析Query,生成执行计划,扫描数据,执行关系型算子,在原始数据上做过滤(Where)、聚合(Sum, Avg, Count)、关联(Join),分组(Group By)、排序(Order By)等,最后将结算结果返回给用户,整个过程都是即时计算,没有预先聚合好的数据可供优化查询速度,拼的都是资源和算力的大小。

ROLAP 不需要进行数据预处理 ( pre-processing ),因此查询灵活,可扩展性好。这类引擎使用 MPP 架构 ( 与Hadoop相似的大型并行处理架构,可以通过扩大并发来增加计算资源 ),可以高效处理大量数据。

但是当数据量较大或 query 较为复杂时,查询性能也无法像 MOLAP 那样稳定。所有计算都是即时触发 ( 没有预处理 ),因此会耗费更多的计算资源,带来潜在的重复计算。

因此,ROLAP 适用于对查询模式不固定、查询灵活性要求高的场景。如数据分析师常用的数据分析类产品,他们往往会对数据做各种预先不能确定的分析,所以需要更高的查询灵活性。

MOLAP 的优点和缺点

MOLAP的典型代表是:Druid,Kylin,MOLAP一般会根据用户定义的数据维度、度量(也可以叫指标)在数据写入时生成预聚合数据;Query查询到来时,实际上查询的是预聚合的数据而不是原始明细数据,在查询模式相对固定的场景中,这种优化提速很明显。

MOLAP 的优点和缺点都来自于其数据预处理 ( pre-processing ) 环节。数据预处理,将原始数据按照指定的计算规则预先做聚合计算,这样避免了查询过程中出现大量的即使计算,提升了查询性能。

但是这样的预聚合处理,需要预先定义维度,会限制后期数据查询的灵活性;如果查询工作涉及新的指标,需要重新增加预处理流程,损失了灵活度,存储成本也很高;同时,这种方式不支持明细数据的查询,仅适用于聚合型查询(如:sum,avg,count)。

因此,MOLAP 适用于查询场景相对固定并且对查询性能要求非常高的场景。如广告主经常使用的广告投放报表分析。虽然这么说,但是随着Doris的发布,其被广告应用于统计以及广告主报表的场景,参考:Doris简史Apache Doris在美团外卖数仓中的应用实践日增百亿数据,查询结果秒出, Apache Doris 在 360 商业化的统一 OLAP 应用实践Apache Doris产品调研报告

参考:常见开源OLAP技术架构对比

ant-design-pro v5学习笔记

ant-design-pro基于ant design和umijs,v5是目前的最新版本

ant design官方文档:https://ant.design/index-cn/

umijs官方文档:https://v3.umijs.org/zh-CN/docs/directory-structure

项目demo:https://preview.pro.ant.design/dashboard/analysis

1.初始化ant-design-pro v5项目

快速创建项目,ant-design-pro v5需要node14,如果版本过低的话则需要升级

1
2
https://pro.ant.design/zh-CN/docs/getting-started/

选项我选了umi@3和simple,创建出来项目结构如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
├── config                   # umi 配置,包含路由,构建等配置
├── mock # 本地模拟数据
├── public
│ └── favicon.png # Favicon
├── src
│ ├── assets # 本地静态资源
│ ├── components # 业务通用组件
│ ├── e2e # 集成测试用例
│ ├── layouts # 通用布局
│ ├── models # 全局 dva model
│ ├── pages # 业务页面入口和常用模板
│ ├── services # 后台接口服务
│ ├── utils # 工具库
│ ├── locales # 国际化资源
│ ├── global.less # 全局样式
│ └── global.ts # 全局 JS
├── tests # 测试工具
├── README.md
└── package.json

如果需要去掉手机登录相关的,参考:修改 Antd Pro V5 登录页面

如果需要去掉国家化的代码,参考:https://pro.ant.design/zh-CN/docs/getting-started

1
2
npm run i18n-remove

2.ant-design-pro v5项目的路由

参考:Ant Design Pro V5 的路由设置

ant-design-pro

全文 >>

Python学习笔记——基本语法

1.程序输入和输出

raw_input()内建函数

1
2
3
4
5
>>> user = raw_input('Enter your name:')
Enter your name:root
>>> print 'Your name is:',user
Your name is: root

print语句

1
2
3
4
5
6
>>> myString = 'Hello World!'
>>> print myString
Hello World!
>>> myString
'Hello World!'

1
2
3
4
5
>>> print type(u"你")    #都能输出汉字,但是输出的类型不一样
<type 'unicode'>
>>> print type("你")
<type 'str'>

全文 >>

ubuntu下安装TexLive和Texmaker

1.首先下载TexLive2015的ISO文件,挂载并安装

参考:ubuntu14.04配置中文latex完美环境(texlive+texmaker+lyx)

中文字体设置参考:ubuntu 下安装 texlive 并设置 ctex 中文套装

首先新建一个目录,文件就挂载在这个目录下

1
2
sudo mkdir /media/cdimage

挂载,并使其有读写权限

1
2
sudo mount -o rw,loop /media/lintong/工作/Ubuntu_Software/64bit_Software/TeXLive/TeXLive2015/texlive2015.iso /media/cdimage

全文 >>

ubuntu16.04安装clickhouse

1.安装步骤参考官方文档

1
2
https://clickhouse.com/docs/zh/getting-started/install

如下

1
2
3
4
5
6
7
8
9
10
11
12
sudo apt-get install -y apt-transport-https ca-certificates dirmngr
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 8919F6BD2B48D754

echo "deb https://packages.clickhouse.com/deb stable main" | sudo tee \
/etc/apt/sources.list.d/clickhouse.list
sudo apt-get update

sudo apt-get install -y clickhouse-server clickhouse-client

sudo service clickhouse-server start
clickhouse-client # or "clickhouse-client --password" if you've set up a password.

填写default user的初始密码,回车可以看到如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Enter password for default user:
Password for default user is saved in file /etc/clickhouse-server/users.d/default-password.xml.
Setting capabilities for clickhouse binary. This is optional.
Cannot set 'net_admin' or 'ipc_lock' or 'sys_nice' or 'net_bind_service' capability for clickhouse binary. This is optional. Taskstats accounting will be disabled. To enable taskstats accounting you may add the required capability later manually.
chown -R clickhouse:clickhouse '/etc/clickhouse-server'

ClickHouse has been successfully installed.

Start clickhouse-server with:
sudo clickhouse start

Start clickhouse-client with:
clickhouse-client --password

修改clickhouse数据路径配置,需要将所有/var/lib/clickhouse的配置修改成

1
2
sudo sed -i 's/var\/lib\/clickhouse/data01\/clickhouse/g' /etc/clickhouse-server/config.xml

创建目录

1
2
3
lintong@master:/data01$ sudo mkdir clickhouse
lintong@master:/data01$ sudo chown -R clickhouse:clickhouse ./clickhouse

启动clickhouse server

1
2
3
4
5
6
7
lintong@master:~$ sudo clickhouse start
chown -R clickhouse: '/var/run/clickhouse-server/'
Will run sudo --preserve-env -u 'clickhouse' /usr/bin/clickhouse-server --config-file /etc/clickhouse-server/config.xml --pid-file /var/run/clickhouse-server/clickhouse-server.pid --daemon
Waiting for server to start
Waiting for server to start
Server started

连接clickhouse

1
2
3
4
5
6
7
lintong@master:~$ clickhouse-client
ClickHouse client version 23.10.3.5 (official build).
Connecting to localhost:9000 as user default.
Password for user (default):
Connecting to localhost:9000 as user default.
Connected to ClickHouse server version 23.10.3 revision 54466.

client使用的9000端口

访问的话可以看到如下说明,如果想要使用http连接的话,需要使用8123端口

1
2
3
Port 9000 is for clickhouse-client program
You must use port 8123 for HTTP.

使用datagrip连接clickhouse

基础语法参考官方文档

1
2
https://clickhouse.com/docs/en/guides/creating-tables

创建database,默认会有一个default库

1
2
CREATE DATABASE IF NOT EXISTS helloworld

创建table

1
2
3
4
5
6
7
8
9
10
CREATE TABLE helloworld.my_first_table
(
user_id UInt32,
message String,
timestamp DateTime,
metric Float32
)
ENGINE = MergeTree()
PRIMARY KEY (user_id, timestamp)

写入数据

1
2
3
4
5
6
INSERT INTO helloworld.my_first_table (user_id, message, timestamp, metric) VALUES
(101, 'Hello, ClickHouse!', now(), -1.0 ),
(102, 'Insert a lot of rows per batch', yesterday(), 1.41421 ),
(102, 'Sort your data based on your commonly-used queries', today(), 2.718 ),
(101, 'Granules are the smallest chunks of data read', now() + 5, 3.14159 )

查询数据

1
2
SELECT * FROM helloworld.my_first_table

全文 >>