1.1B在AWS上使用Hydrolix乘坐出租车

2021-02-06 19:48:40

Hydrolix是基于云的分析平台。这是相当合理的,因为系统组件已分解为自己的服务,可以根据需要扩展和缩小。例如,您可以将批量导入对等体扩展到任意数量的EC2实例,并仅为大型一次性导入选择定制实例类型。导入完成后,您可以关闭这些对等设备,而其余集群服务不会受到影响。

实时数据流或运行大型查询也是如此。基本核心服务的运行成本约为每月30美元,但除此之外,您可以设置愿意为弹性工作负载提前支付的价格。能够选择实例类型意味着除了水平缩放外还有一定程度的垂直缩放。

您存储在Hydrolix中的数据最终存在于您拥有的AWS S3存储桶中。他们在定制压缩技术,谓词下推和微索引方面投入了大量精力,这对于降低S3成本以及加快查询速度大有帮助。在有效使用S3方面,该产品可以大大消除对" hot"的需求。和"冷"固定容量存储系统中常见的数据管理技术。

以上所有这些都意味着您的容量计划不是一成不变的,可以随时更改。

Hydrolix是为不可变的仅追加数据集而设计的,并且SQL API基于ClickHouse的SQL和二进制线路协议的风格,因此Hydrolix能够搭载Google的Looker之类的工具中已经存在的ClickHouse支持。 ,Superset和Grafana。支持无限制的维度,无限制的基数,乱序数据和多模式表等功能。

Hydrolix背后的团队总部位于俄勒冈州波特兰,之前曾在以数据和网络为中心的公司工作,例如Cisco,Fastly,Akamai,Elastic,Splunk和New Relic等。

在本文中,我将了解Hydrolix能够以多快的速度运行11亿次出租车乘车基准。该数据集由2009年至2015年在纽约市进行的11亿次出租车旅行组成。这与我用来对Amazon Athena,BigQuery,BrytlytDB,ClickHouse,Elasticsearch,EMR,kdb + / q, OmniSci,PostgreSQL,Redshift和Vertica。我有所有这些基准的单页摘要,以供比较。

batch-peer从S3提取批处理数据。这可以是一次性事件,也可以通过通知连续发生。

CLIENT_ID CLUSTER_ID所在区域的主机状态------------------ ------------ ---------------- --- ------------------- --------------- ------- ------ --- hdxcli-ekmeho6e hdx-zl72rqld 2021-01-05 08:50:14 try3.hydrolix.live。 CREATE_COMPLETE jturner us-east-2

在任何群集中,您都可以查看正在运行的服务,EC2实例类型和节点数。这是示例输出。

服务/人数计数家庭大小盘-------------- ------- -------- ------- ------批次-peer0 1 r5 2xlarge 30config 1 t2微型30grafana 1 t2微型30head 1 c5n xlarge 30merge-peer0 1 r5大30query-peer0 3 c5n 9xlarge 100stream-head 1 m5 xlarge 30stream-peer0 1 m5 xlarge 30ui 1 t2 micro 30

然后,我将从Hydrolix获得许可证密钥。我的Hydrolix账户已配置了AWS子账户的凭证,该账户将用于存储数据和配置运行Hydrolix的EC2实例。

$ ./hdxctl get-license \ –-account_id 123456789012 \ –-region us-east-2 \ –-admin-email [email protected] \ –组织organizationsblogg \ --host Marksblogg

上面将填充CLIENT_ID,CLUSTER_ID和ORG_ID环境变量,这些变量将在以后使用。

在我的AWS EC2子帐户中,我已订阅了Hydrolix AMI。在该页面上,有一个定价矩阵,解释了成本和配置选项。此AMI也可以作为免费试用的一部分使用。

Hydrolix群集由若干服务组成。最初,它们的比例设置为零。以下命令会将它们扩展到工作群集所需的最小数量。

我将使用的数据集是我六年来在纽约市进行的11亿次出租车出行的数据转储。原始数据集为56个GZIP压缩的CSV文件,压缩后为104 GB,解压缩后需要500 GB空间。 Redshift的Billion Taxi Rides博客文章详细介绍了如何将数据集放在一起,并详细描述了其中包含的列。

我将向Hydrolix授予对S3存储桶的访问权限,在该存储区中我已存储了该基准测试的数据集。提前已经在我的机器上安装了AWS CLI并使用我的凭证对其进行了配置。

配置服务受IPv4限制。我将运行以下命令以允许我的IPv4地址访问。

然后,我将使用最初启动集群时通过电子邮件发送的凭据来获取API令牌。

$ curl \-请求POST \ --url https://marksblogg.hydrolix.io/config/v1/login \ --header' content-type:application / json' \ --data' {" username":" [email protected]" ;," password":"< PASSWORD>&# 34;}'

Warning: Can only detect less than 5000 characters

$ curl \-请求POST \ --url https:// $ HOSTNAME.hydrolix.io / config / v1 / orgs / $ ORG_ID / jobs \ --header' content-type:application / json' \ --header'授权:Bearer $ API_TOKEN' \ --data' {" name&#34 ;:" taxi data import&#34 ;," settings&#34 ;: {" max_rows_per_partition&#34 ;: 1000000, " max_minutes_per_partition&#34 ;: 14400," source":{" table&#34 ;:" taxi.trips&#34 ;," type&#34 ;: " batch","子类型":aws s3"," transform":" taxi_trips_transform","设置":{" url&#34 ;:" s3:// some-bucket / taxi-trips /" }}}}'

$ curl \-请求GET \ --url https:// $ HOSTNAME.hydrolix.io / config / v1 / orgs / $ ORG_ID / jobs \ --header' content-type:application / json' \ --header'授权:Bearer $ API_TOKEN' \ --data' {" name&#34 ;:"出租车数据导入"}'

导入完成后,我可以将对等节点数减少到零。

以上导入在大约30分钟内完成,并在S3上存储了1,390个HDX分区,总大小为83.6 GB。

对于以下基准测试,我将查询头数缩放为1,并将查询对等点数缩放为3。两者都将使用EC2的c5n.9xlarge实例类型。

$ ./hdxctl标尺\-查询头计数1 \-查询对等计数3 \-查询对等实例类型c5n.9xlarge \ $ CLIENT_ID $ CLUSTER_ID

以下是通过Hydrolix SQL接口执行的,该接口通过基于REST的HTTP API公开。

选择乘客计数,到年(提取日期)AS年,往返(行程距离)AS距离,出租车(COUNT)(*)。旅行GROUP BY passenger_count,年,距离ORDER BY年,COUNT(*)DESC;

完成基准测试后,我会将查询头和查询对等节点的规模缩小到零。这将使我不必为这些机器支付任何持续的EC2费用。

查询#4的基准时间成功超过了上次ClickHouse基准。该查询进行了大量的转换,并且一直以来都是计算速度最慢的查询,而与运行该数据库的数据库无关。很高兴看到这个领域的优化。

也很高兴看到这些新型的分析引擎将AWS S3视为商品存储。将数据存储在此处非常便宜,我还没有找到另一种具有经过验证的耐用性的服务。 S3可用的安全选项类似于瑞士军刀。

几年前,我从一家在电信公司工作的Oracle工程师租借了南欧的AirBNB。他告诉我,公司的员工在每个月的最后十天都被禁止在数据仓库中做任何事情,因为他们需要确保每个客户都可以。账单按时生成。有了Hydrolix之类的东西,他的雇主可以拿出信用卡,扩大工作规模,然后再缩小规模。

能够打开和关闭分布式数据库的各个部分的功能真是太棒了。在我的职业生涯中,无数次不得不将遗留数据集导入到新数据库中,并且此过程通常受群集设计为24/7运行的硬件的限制。在某些情况下,我手动启动了额外的EC2实例来处理导入和转换,但这会占用大量昂贵的数据工程时间。

感谢您抽出宝贵的时间阅读这篇文章。我为北美和欧洲的客户提供咨询和动手开发服务。如果您想讨论我的产品如何帮助您的业务,请通过LinkedIn与我联系。