在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

深入RAPIDS了解處理Cassandra數(shù)據(jù)的方法

星星科技指導(dǎo)員 ? 來源:NVIDIA ? 作者:Alex Cai ? 2022-04-17 10:38 ? 次閱讀

組織將其大部分高速事務(wù)數(shù)據(jù)保存在快速的 NoSQL 數(shù)據(jù)存儲中,如 Apache Cassandra ?。最終,需要從這些數(shù)據(jù)中獲得分析見解 。從歷史上看,用戶利用外部大規(guī)模并行處理分析系統(tǒng)(如 Apache Spark )來實現(xiàn)這一目的。然而,今天的分析生態(tài)系統(tǒng)正在迅速采用 AI 和 ML 技術(shù),這些技術(shù)的計算在很大程度上依賴于 GPU s 。

在這篇文章中,我們探索了一種處理 Cassandra SSTables 的尖端方法,方法是使用 RAPIDS 生態(tài)系統(tǒng)中的工具將它們直接解析到 GPU 設(shè)備內(nèi)存中。這將使用戶能夠以更少的初始設(shè)置更快地到達見解 ,并且還可以方便地 MIG 評估用 Python 編寫的現(xiàn)有分析代碼。

在這篇分為兩部分的系列文章的第一篇文章中,我們將快速深入 RAPIDS 項目,并探索一系列選項,使來自卡桑德拉的數(shù)據(jù)可用于 RAPIDS 分析。最后,我們將描述我們當(dāng)前的方法:解析 C ++中的 sRebug 文件并將它們轉(zhuǎn)換成 GPU 友好的格式,使數(shù)據(jù)更容易加載到 GPU 設(shè)備內(nèi)存中。

如果您想跳過循序漸進的過程并立即嘗試 sstable to arrow ,請查看第二職位。

什么是 RAPIDS

RAPIDS是一套開源庫,用于在 GPU 上進行端到端的分析和數(shù)據(jù)科學(xué)。它源于CUDA,這是一個由 NVIDIA 開發(fā)的開發(fā)人員工具包,旨在使開發(fā)人員能夠利用其 GPU 的優(yōu)勢。

RAPIDS 采用了常見的AI/ML API,如pandas和scikit-learn,并使它們可用于 GPU 加速。數(shù)據(jù)科學(xué),特別是機器學(xué)習(xí),使用了大量并行計算,這使得它更適合在 GPU 上運行,該 GPU 可以比當(dāng)前的 CPU s(來自rapids.ai的圖像)高幾個數(shù)量級的“多任務(wù)”:

pYYBAGJbfZ2ANlISAAA9LM0pjB0921.png

圖 1 :

一旦我們以 cuDF 的形式獲得 GPU 上的數(shù)據(jù)(本質(zhì)上是 pandas 數(shù)據(jù)幀的 RAPIDS 等價物),我們就可以使用與 MIG 熟悉的 Python 庫幾乎相同的 API 與之交互,如 pandas 、 scikit learn 等,如下圖從 RAPIDS 所示:

poYBAGJbfZ6Add_aAACPFDdZmvw364.png

圖 2 :

pYYBAGJbfZ-AQeVLAACHSZnZTy0433.png

圖 3 :

注意使用Apache Arrow作為底層內(nèi)存格式。箭頭是基于列而不是行的,這會導(dǎo)致更快的分析查詢。它還帶有進程間通信( IPC )機制,用于在進程之間傳輸箭頭記錄批(即表)。 IPC 格式與內(nèi)存中的格式相同,它消除了任何額外的復(fù)制或反序列化成本,并為我們提供了一些非??焖俚臄?shù)據(jù)訪問。

在 RAPIDS 上運行分析的好處是顯而易見的。您所需要的只是合適的硬件,只需查找 Python 數(shù)據(jù)科學(xué)庫的名稱并將其替換為 GPU 等價物,即可 MIG 對 GPU 上運行的現(xiàn)有數(shù)據(jù)科學(xué)代碼進行評級。

我們?nèi)绾螌?Cassandra 數(shù)據(jù)放到 GPU 上?

在過去的幾周里,我一直在研究五種不同的方法,按復(fù)雜性增加的順序列出如下:

使用 Cassandra 驅(qū)動程序獲取數(shù)據(jù),將其轉(zhuǎn)換為 pandas 數(shù)據(jù)幀,然后將其轉(zhuǎn)換為 cuDF 。

與前面相同,但跳過 pandas 步驟,將驅(qū)動程序中的數(shù)據(jù)直接轉(zhuǎn)換為箭頭表。

使用 Cassandra 服務(wù)器代碼從磁盤讀取 SSTables ,使用 Arrow IPC 流格式對其進行序列化,然后將其發(fā)送到客戶端。

與方法 3 相同,但是在 C ++中使用我們自己的解析實現(xiàn),而不是使用 CasANDRA 代碼。

與方法 4 相同,但在解析 SSK 表時使用 GPU 矢量化和CUDA。

首先,我將簡要概述這些方法中的每一種,然后在最后進行比較,并解釋我們接下來的步驟。

使用 Cassandra 驅(qū)動程序獲取數(shù)據(jù)

這種方法非常簡單,因為您可以使用現(xiàn)有庫而不必進行太多的黑客攻擊。我們從驅(qū)動程序獲取數(shù)據(jù),將session.row_factory設(shè)置為 pandas _factory函數(shù),告訴驅(qū)動程序如何將傳入數(shù)據(jù)轉(zhuǎn)換為 pandas .DataFrame。然后,調(diào)用 cuDF .DataFrame.from_ZBK5]函數(shù)將數(shù)據(jù)加載到 GPU 上是一件簡單的事情,然后我們可以使用 RAPIDS 庫運行 GPU -加速分析。

以下代碼要求您能夠訪問正在運行的 Cassandra 群集。有關(guān)更多信息,請參閱DataStax Python 驅(qū)動程序文檔。您還需要使用Conda安裝所需的 Python 庫:

BashCopy

conda install -c blazingsql -c rapidsai -c nvidia -c conda-forge -c defaults blazingsql cudf pyarrow pandas numpy cassandra-driver

PythonCopy

from cassandra.cluster import Cluster
from cassandra.auth import PlainTextAuthProvider

import pandas as pd
import pyarrow as pa
import cudf
from blazingsql import BlazingContext

import config

# connect to the Cassandra server in the cloud and configure the session settings
cloud_config= {
        'secure_connect_bundle': '/path/to/secure/connect/bundle.zip'
}
auth_provider = PlainTextAuthProvider(user=’your_username_here’, password=’your_password_here’)
cluster = Cluster(cloud=cloud_config, auth_provider=auth_provider)
session = cluster.connect()

def pandas_factory(colnames, rows):
    """Read the data returned by the driver into a pandas DataFrame"""
    return pd.DataFrame(rows, columns=colnames)
session.row_factory = pandas_factory

# run the CQL query and get the data
result_set = session.execute("select * from your_keyspace.your_table_name limit 100;")
df = result_set._current_rows # a pandas dataframe with the information
gpu_df = cudf.DataFrame.from_pandas(df) # transform it into memory on the GPU

# do GPU-accelerated operations, such as SQL queries with blazingsql
bc = BlazingContext()
bc.create_table("gpu_table", gpu_df)
bc.describe_table("gpu_table")
result = bc.sql("SELECT * FROM gpu_table")
print(result)

使用 Cassandra 驅(qū)動程序直接將數(shù)據(jù)提取到 Arrow 中

此步驟與上一步相同,只是我們可以使用以下箭頭關(guān)閉 pandas \ u 工廠:

PythonCopy

def get_col(col):
    rtn = pa.array(col) # automatically detects the type of the array

    # for a full implementation, we would want to fully check which 
arrow types want
    # to be manually casted for compatibility with cudf
    if pa.types.is_decimal(rtn.type):
        return rtn.cast('float32')
    return rtn

def arrow_factory(colnames, rows):
    # convert from the row format passed by
    # CQL into the column format of arrow
    cols = [get_col(col) for col in zip(*rows)]
    table = pa.table({ colnames[i]: cols[i] for i in 
range(len(colnames)) })
    return table

session.row_factory = arrow_factory

然后我們可以用同樣的方法獲取數(shù)據(jù)并創(chuàng)建 cuDF 。

然而,這兩種方法都有一個主要缺點:它們依賴于查詢現(xiàn)有的 Cassandra 集群,這是我們don’t所需要的,因為讀取量大的分析工作負(fù)載 MIG ht 會影響事務(wù)性生產(chǎn)工作負(fù)載,而實時性能是關(guān)鍵。

相反,我們想看看是否有一種方法可以直接從磁盤上的 SSTable 文件中獲取數(shù)據(jù),而無需通過數(shù)據(jù)庫。這就引出了接下來的三種方法。

使用 Cassandra 服務(wù)器代碼從磁盤讀取 SSTables

在磁盤上讀取 SSTables 的最簡單方法可能是使用現(xiàn)有的 Cassandra 服務(wù)器技術(shù),即SSTableLoader。一旦我們從 SSTable 中獲得了分區(qū)列表,我們就可以手動將 Java 對象中的數(shù)據(jù)轉(zhuǎn)換為對應(yīng)于表列的箭頭向量。然后,我們可以將向量集合序列化為 Arrow IPC 流格式,然后通過套接字以這種格式進行流處理。

這里的代碼比前兩種方法更復(fù)雜,比下一種方法開發(fā)得更少,所以我沒有在本文中包含它。另一個缺點是,盡管這種方法可以在 Cassandra 集群以外的單獨進程或機器中運行,但要使用SSTableLoader,我們首先要在客戶端進程中初始化嵌入式 Cassandra ,這在冷啟動時需要相當(dāng)長的時間。

使用自定義 SSTable 解析器

為了避免初始化 CasANDRA ,我們開發(fā)了自己的 C ++實現(xiàn),用于解析二進制數(shù)據(jù)穩(wěn)定文件。關(guān)于這種方法的更多信息可以在下一篇博文中找到。下面是 Cassandra 存儲引擎的指南上一篇 Pickle 的文章,這對破譯數(shù)據(jù)格式有很大幫助。我們決定使用 C ++作為解析器的語言,以最終引入 CUDA ,也可以用于處理二進制數(shù)據(jù)的低級控制。

集成 CUDA 以加快表讀取速度

一旦自定義解析實現(xiàn)變得更加全面,我們計劃開始研究這種方法。利用 GPU 矢量化可以大大加快讀取和轉(zhuǎn)換過程。

Comparison

在當(dāng)前階段,我們主要關(guān)注讀取 SSTable 文件所需的時間。對于方法 1 和 2 ,我們實際上無法公平地衡量這一次,因為 1 )該方法依賴于額外的硬件( Cassandra 集群)和 2 )。在 Cassandra 自身中存在著復(fù)雜的緩存效應(yīng)。然而,對于方法 3 和 4 ,我們可以執(zhí)行簡單的自省來跟蹤程序從開始到結(jié)束讀取 SSTable 文件所需的時間。

以下是針對NoSQLBench生成的 1k 、 5K 、 10k 、 50k 、 100k 、 500k 和 1m 行數(shù)據(jù)集的結(jié)果:

圖 4 :

如圖所示,定制實現(xiàn)比現(xiàn)有的 Cassandra 實現(xiàn)稍快,即使沒有任何額外的優(yōu)化,如多線程。

Conclusion

考慮到分析用例的數(shù)據(jù)訪問模式通常包括大型掃描并經(jīng)常讀取整個表,獲取此數(shù)據(jù)的最有效方法不是通過 CQL ,而是直接獲取 SSL 表。我們能夠在 C ++中實現(xiàn)一個 StAnalyd 解析器,它可以做到這一點,并將數(shù)據(jù)轉(zhuǎn)換成 Apache 箭頭,以便它可以被分析庫所利用,包括 NVIDIA GPU 供電 RAPIDS 生態(tài)系統(tǒng)。由此產(chǎn)生的開源( Apache 2 許可)項目稱為 sstable to arrow ,可在GitHub上獲得,并可通過Docker Hub作為 alpha 版本訪問。

關(guān)于作者

Alex Cai 于 2021 年在 DataStax 實習(xí),是哈佛大學(xué) 2025 級的學(xué)生。他熱衷于計算機、軟件和認(rèn)知科學(xué),在業(yè)余時間,他喜歡閱讀、研究語言學(xué)和玩他的貓。

審核編輯:郭婷

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • NVIDIA
    +關(guān)注

    關(guān)注

    14

    文章

    5181

    瀏覽量

    105343
  • gpu
    gpu
    +關(guān)注

    關(guān)注

    28

    文章

    4875

    瀏覽量

    130310
  • C++
    C++
    +關(guān)注

    關(guān)注

    22

    文章

    2116

    瀏覽量

    74523
收藏 人收藏

    評論

    相關(guān)推薦

    Sapphire Rapids與OpenVINO?工具套件是否兼容?

    無法確定 Sapphire Rapids 與 OpenVINO? 工具套件的兼容性
    發(fā)表于 03-05 06:55

    深入了解 PCB 制造技術(shù):銑削

    了 PCB 銑削的復(fù)雜性、銑削工藝、其優(yōu)勢、挑戰(zhàn)和應(yīng)用。 了解 PCB 銑削 PCB 銑削涉及從覆銅板上機械去除材料,以創(chuàng)建電氣隔離并形成電路圖案。與使用化學(xué)溶液溶解不需要的銅的傳統(tǒng)蝕刻方法不同,銑削使用精確控制的銑削鉆頭來物理雕刻出所需的痕跡。該過程通
    的頭像 發(fā)表于 01-26 21:25 ?372次閱讀
    <b class='flag-5'>深入了解</b> PCB 制造技術(shù):銑削

    使用 RISC-V 進行高效數(shù)據(jù)處理方法

    使用RISC-V進行高效數(shù)據(jù)處理方法涉及多個方面,包括處理器內(nèi)核與DSA(領(lǐng)域特定加速器)之間的通信優(yōu)化、內(nèi)存管理優(yōu)化、多線程性能提升等。以下是一些具體的方法: 一、
    的頭像 發(fā)表于 12-11 17:52 ?791次閱讀

    RAPIDS cuDF將pandas提速近150倍

    在 NVIDIA GTC 2024 上,NVIDIA 宣布,RAPIDS cuDF 當(dāng)前已能夠為 950 萬 pandas 用戶帶來 GPU 加速,且無需修改代碼。
    的頭像 發(fā)表于 11-20 09:52 ?477次閱讀
    <b class='flag-5'>RAPIDS</b> cuDF將pandas提速近150倍

    eda中常用的數(shù)據(jù)處理方法

    探索性數(shù)據(jù)分析(EDA)是一種統(tǒng)計方法,用于使用統(tǒng)計圖表、圖形和計算來發(fā)現(xiàn)數(shù)據(jù)中的模式、趨勢和異常值。在進行EDA時,數(shù)據(jù)處理是至關(guān)重要的,因為它可以幫助我們更好地理解
    的頭像 發(fā)表于 11-13 10:57 ?688次閱讀

    PyTorch 數(shù)據(jù)加載與處理方法

    PyTorch 是一個流行的開源機器學(xué)習(xí)庫,它提供了強大的工具來構(gòu)建和訓(xùn)練深度學(xué)習(xí)模型。在構(gòu)建模型之前,一個重要的步驟是加載和處理數(shù)據(jù)。 1. PyTorch 數(shù)據(jù)加載基礎(chǔ) 在 PyTorch 中
    的頭像 發(fā)表于 11-05 17:37 ?739次閱讀

    深入了解PCI轉(zhuǎn)XMC載板轉(zhuǎn)接卡

    電子發(fā)燒友網(wǎng)站提供《深入了解PCI轉(zhuǎn)XMC載板轉(zhuǎn)接卡.docx》資料免費下載
    發(fā)表于 09-06 14:35 ?0次下載

    數(shù)據(jù)中心應(yīng)用中適用于Intel Xeon Sapphire Rapids可擴展處理器的負(fù)載點解決方案

    電子發(fā)燒友網(wǎng)站提供《數(shù)據(jù)中心應(yīng)用中適用于Intel Xeon Sapphire Rapids可擴展處理器的負(fù)載點解決方案.pdf》資料免費下載
    發(fā)表于 09-03 11:20 ?0次下載
    <b class='flag-5'>數(shù)據(jù)</b>中心應(yīng)用中適用于Intel Xeon Sapphire <b class='flag-5'>Rapids</b>可擴展<b class='flag-5'>處理</b>器的負(fù)載點解決方案

    數(shù)據(jù)中心應(yīng)用中適用于Intel? Xeon? Sapphire Rapids可擴展處理器的負(fù)載點解決方案

    電子發(fā)燒友網(wǎng)站提供《數(shù)據(jù)中心應(yīng)用中適用于Intel? Xeon? Sapphire Rapids可擴展處理器的負(fù)載點解決方案.pdf》資料免費下載
    發(fā)表于 08-26 09:54 ?2次下載
    <b class='flag-5'>數(shù)據(jù)</b>中心應(yīng)用中適用于Intel? Xeon? Sapphire <b class='flag-5'>Rapids</b>可擴展<b class='flag-5'>處理</b>器的負(fù)載點解決方案

    Intel預(yù)告下一代至強處理器:Diamond Rapids攜LGA9324接口震撼登場

    據(jù)8月23日最新消息,Intel 已在緊鑼密鼓地準(zhǔn)備其下一代至強處理器的安裝測試工具,這款代號“Diamond Rapids”的處理器預(yù)示著又一輪技術(shù)革新。尤為引人注目的是,它將搭載全新的Oak
    的頭像 發(fā)表于 08-23 14:51 ?1821次閱讀

    深入了解表面貼裝晶體諧振器DSX1210A

    深入了解表面貼裝晶體諧振器DSX1210A
    的頭像 發(fā)表于 07-25 14:27 ?639次閱讀
    <b class='flag-5'>深入了解</b>表面貼裝晶體諧振器DSX1210A

    深入了解恒溫晶體振蕩器DC5032AS

    深入了解恒溫晶體振蕩器DC5032AS
    的頭像 發(fā)表于 07-25 10:37 ?495次閱讀
    <b class='flag-5'>深入了解</b>恒溫晶體振蕩器DC5032AS

    變頻器產(chǎn)生噪音的原因及處理方法

    噪音的原因并采取有效的處理方法,對于確保設(shè)備安全、提高工作效率具有重要意義。本文將對變頻器產(chǎn)生噪音的原因進行深入分析,并提出相應(yīng)的處理方法。
    的頭像 發(fā)表于 06-11 17:50 ?5097次閱讀

    變電機燒壞的原因與處理方法

    變電機作為工業(yè)生產(chǎn)中不可或缺的重要設(shè)備,其穩(wěn)定運行對于保障生產(chǎn)效率和產(chǎn)品質(zhì)量具有重要意義。然而,在實際使用過程中,由于各種原因,變電機可能會出現(xiàn)燒壞的情況。本文將對變電機燒壞的原因進行深入分析,并給出相應(yīng)的處理方法,旨在幫助讀者
    的頭像 發(fā)表于 06-11 11:47 ?756次閱讀

    處理器的定義和種類

    處理器,作為計算機系統(tǒng)的核心部件,承載著執(zhí)行指令、處理數(shù)據(jù)的重要任務(wù)。隨著信息技術(shù)的飛速發(fā)展,處理器的種類和性能也在不斷提升。本文將對處理
    的頭像 發(fā)表于 05-12 18:12 ?3678次閱讀
    主站蜘蛛池模板: 免费能看的黄色网址 | 天天干天天操天天舔 | 欧美一卡二卡3卡4卡无卡六卡七卡科普 | 在线女同免费观看网站 | 夜夜爱夜夜做夜夜爽 | 久久午夜宅男免费网站 | 日韩一级片视频 | 日本特黄特色aaa大片免费欧 | 国产大片免费观看资源 | 四虎亚洲国产成人久久精品 | 日韩精品免费一区二区三区 | 国产精品久久久久久久久福利 | 亚洲一区二区电影 | 美女被草视频 | 免费在线一区二区三区 | 色婷婷六月 | 欧美一级特黄aaa大片 | 美女视频网站免费播放视 | 免费啪视频 | 黄www片| 操人网站 | 国产精品午夜自在在线精品 | 四虎国产精品永久在线播放 | 91av成人| 欧美激情片网站 | 婷婷色香五月激情综合2020 | 三级电影在线观看视频 | 三级理论在线播放大全 | 久久婷婷综合五月一区二区 | 国产成人精品曰本亚洲78 | 午夜精品福利影院 | 色爽爽爽爽爽爽爽爽 | 国产特黄一级毛片特黄 | 色先锋av资源中文字幕 | 可以免费看黄的网站 | 色丁香在线观看 | 欧美成人亚洲欧美成人 | 亚洲 欧美 精品专区 极品 | 免费人成动漫在线播放r18 | 国产老头和美女在线观看 | 久久黄色影片 |