Clickhouse 以太坊分析:基础交易数据清洗

概述

读者可前往我的网站获得更好的阅读体验。

笔者最近遇到了许多关于数据分析的文章,大部分都使用了 DuneSaaS 工具,这些工具往往提供了清洗后的区块链数据和数据库分析工具。对于大部分数据分析师而言,这些工具可以应对一系列复杂的数据分析问题,而且免去了搭建数据处理平台的苦恼。

但作为一个爱折腾的工程师,我决定几乎从零开始搭建一套区块链历史数据数据分析系统。在此项目中,我们仅使用了 0xfast 作为数据提供商,如果读者追求纯粹的自建,可以考虑自建以太坊节点抓取历史数据。

为尽可能提高分析系统的效率,我使用了 Clickhouse 作为数据存储和分析工具。本文仅使用 Clickhouse 以完成以下工作:

  1. 环境搭建。讨论在服务器内安装 Clickhouse 可能会遇到的问题并在个人计算机上安装客户端。
  2. 数据导入。使用纯粹的 SQL 代码导入数据,此处会涉及到使用 Clickhouse 进行 JSON 处理的内容。
  3. 数据分析。完成一些基础的数据分析任务,这并不是本文的核心。

注意,Clickhouse 对服务器似乎有着严格的性能要求,但由于本文分析的样本仅为 100 个区块,笔者使用 3 核心 3.5 GB 内存的服务器已经可以完成本博客中的任务。VPS负载如下:

VPS Load

当然,读者也可以考虑使用个人计算机完成此博客中的内容。如果涉及以太坊全区块链数据分析,建议使用高规格服务器,毕竟以太坊全节点数据集近 650GB。

环境搭建

服务端

如果你是一个时间价值比较高的工程师,且不想折腾clickhouse的安装,你可以选择 Clickhouse Cloud,似乎有一个月的试用期,价格数据如下:

Clickhouse Cloud

如果你选择此方案,就无需阅读本节。

以下介绍如何在服务器上安装Clickhouse,本部分主要参考了 Clickhouse install,同时本文也会补充一些部分错误的修复方法。

由于笔者并不是一边搭建一边编写的博客,错误的截图并未给出,如果读者遇到错误,可在本文的评论区内留下截图。

安装Clickhouse相当简单,步骤如下:

  1. 下载脚本并执行
    curl https://clickhouse.com/ | sh
    
  2. 执行安装程序
    sudo ./clickhouse install
    
    执行此安装程序过程中,请耐心等待,在前期安装过程中,不会有任何输出提示。
  3. 在安装过程的最后,会要求输入默认密码,建议键入复杂密码:
    Creating log directory /var/log/clickhouse-server.
    Creating data directory /var/lib/clickhouse.
    Creating pid directory /var/run/clickhouse-server.
    chown -R clickhouse:clickhouse '/var/log/clickhouse-server'
    chown -R clickhouse:clickhouse '/var/run/clickhouse-server'
    chown  clickhouse:clickhouse '/var/lib/clickhouse'
    Enter password for default user:
    
    读者可能已经发现此处使用了 clickhouse:clickhouse 用户进行了一系列授权操作,而不是root用户,所以进行应用操作时请使用clickhouse用户
  4. 启动clickhouse:
    sudo clickhouse start
    
  5. 校验状态:
    sudo clickhouse status
    
    合理的输出如下:
    /var/run/clickhouse-server/clickhouse-server.pid file exists and contains pid = 10818.
    The process with pid = 10818 is running.
    
    如果您的输出格式与之不符,就说明启动失败。

一旦启动失败,我们就要进入痛苦的debug阶段,读者可以使用以下命令启动clickhouse:

sudo clickhouse server --config-file /etc/clickhouse-server/config.xml

此处我们指定了启动配置文件/etc/clickhouse-server/config.xml,否则会使用默认文件,造成启动失败的问题。

此命令会将log输出到终端,读者可以自行查看进行debug,大部分问题都出现在用户权限配置问题上。

下面列出一个仅用于学习的配置方法,为方便使用,我直接将root用户置为clickhouse的管理者,并手动启动服务器,相关命令如下:

  1. 配置权限:
    sudo chown -R root /var/lib/clickhouse /var/log/clickhouse-server /etc/clickhouse-server
    
  2. 手动启动服务器:
    sudo /usr/bin/clickhouse-server --config-file /etc/clickhouse-server/config.xml --pid-file /var/run/clickhouse-server/clickhouse-server.pid --daemon
    

如果读者遇到其他问题,请直接放在评论区

最后,请放行相关端口,此过程需要配置系统防火墙,读者请根据自身系统来进行配置。读者可尝试开启 http://服务器IP:配置端口/play 查看是否可以配置正确,若配置正确且放行端口正确,会出现如下显示:

Clickhouse play

客户端

使用一个优秀的本地SQL客户端会大幅提高工作效率,由于不想在服务端安装一套clickhouse,所以我选择了其他的sql客户端,读者可以查看自己常用的 SQL 客户端是否支持 clickhouse。在本博客中,我使用了 dbeaver 作为客户端,原因在于:

  1. 社区版开源且免费
  2. 压缩后体积仅为 110 MB,较为小巧
  3. 主流操作系统均支持

读者可以根据自己的系统选择下载对应的版本。

<
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WongSSH

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值