不再收费!MapD数据库开源,过来人指点如何上手

简介:

不再收费!MapD数据库开源,过来人指点如何上手

Mark Litwintschik几天,MapD 将要开源的消息一传出,我是非常惊讶的。

在我的数据处理、管理系统跑分榜上,MapD 一直霸占着头名。此前,如果想要用 MapD,你得花钱买一个 license,或者在 AWS 上运行 MapD 的 AMI。但现在,其 GPU 驱动的数据库源代码,已经陆续上传到 GitHub。任何人都可以从原始资料编译数据库,运行在有任意数量 GPU 的任何计算设备上。或者,也可以把编译的二进制数据运行在 GPU 支撑的 AWS, 谷歌云或微软 Azure 等云计算平台。

相比我测试过的其他流行分析引擎,MapD 处理工作量的速度要比它们快两个量级。但它的好处不止于此,MapD 还有一个基于网页端的制图检索界面。因此,我非常怀疑,它开源的消息将在数据社区掀起一波海啸。

既然成本门槛已经被移除,更多的开发者将可自由探索  MapD 的各项功能。因此,我也预测它的部署数量将会迎来井喷。只要运行的是 Linux、用的是英伟达的 GPU,现在任何人都可以编译、运行、分析 MapD 的源代码,而它是迄今为止我所发现的最先进的 GPU 数据库。

对于英伟达,这大概是一个很大的利好——MapD 实现其性能用的是 N 卡的 CUDA 平台以及 GPU 硬件。但有一点我要提醒大家,虽然 MapD 在 N 卡上才能发挥真正的性能,但在原则上,没有 GPU 还是能够照常运行、使用 MapD 的各项功能。在没有 GPU 的机器上,英伟达驱动会报告没有找到设备,探后 MapD 会回到 CPU 模式。我从没用 CPU 模式跑过分,所以对于该模式下的性能牺牲幅度,我没法评论。但该模式下MapD 起码看起来功能正常,操作起来没什么问题。

本文中,我将手把手带大家从原始数据上编译、运行 MapD。开始之前雷锋网(公众号:雷锋网)做个友情提醒,大伙儿若遇到任何问题,可到 MapD 社区论坛求助。

我的硬件、系统设置

我的机器用的是英特尔酷睿 i5 4670K,频率是 3.4 GHz;内存为 8 GB DDR3 RAM;硬盘是闪迪 SDSSDHII960G 960 GB SSD;GPU 是英伟达 GTX 1080。

系统是 Ubuntu 16.04.2 Server LTS。我选这个版本,因为它的技术支持会一直到 2021 四月。

安装 MapD's 附件

我会从在 apt 的资源列表中,启用资源库源代码开始。


$ sudo sed -i -- \
   's/# deb-src/deb-src/g' \
   /etc/apt/sources.list


之后刷新 apt 资源列表,安装 39 个包。


$ sudo apt update
$ sudo apt install \
     autoconf \
     autoconf-archive \
     binutils-dev \
     bison++ \
     bisonc++ \
     build-essential \
     clang-3.8 \
     clang-format-3.8 \
     cmake \
     cmake-curses-gui \
     default-jdk \
     default-jdk-headless \
     default-jre \
     default-jre-headless \
     flex \
     git-core \
     golang \
     google-perftools \
     libboost-all-dev \
     libcurl4-openssl-dev \
     libdouble-conversion-dev \
     libevent-dev \
     libgdal-dev \
     libgflags-dev \
     libgoogle-glog-dev \
     libgoogle-perftools-dev \
     libiberty-dev \
     libjemalloc-dev \
     libldap2-dev \
     liblz4-dev \
     liblzma-dev \
     libncurses5-dev \
     libpng-dev \
     libsnappy-dev \
     libssl-dev \
     llvm-3.8 \
     llvm-3.8-dev \
     maven \
     zlib1g-dev


下一步,我会下载安装 8.0 版本的英伟达 CUDA Toolkit。它会安装显卡驱动,并取代所有已存在的驱动。


$ curl -L -O https://developer.nvidia.com/compute/cuda/8.0/Prod2/local_installers/cuda-repo-ubuntu1604-8-0-local-ga2_8.0.61-1_amd64-deb
$ sudo dpkg -i cuda-repo-ubuntu1604-8-0-local-ga2_8.0.61-1_amd64-deb
$ sudo apt update
$ sudo apt install cuda


新驱动装好之后,重启系统


$ sudo reboot


系统备份之后,英伟达的系统管理界面应该显示对你的驱动和 GPU 的检测诊断。


$ nvidia-smi


MapD 利用 Thrift 在客户和服务器之间进行交流。我将从资源哪里安装它。0.10.0 版本的 Thrift 与 MapD 的兼容性是很不错的。


$ sudo apt build-dep thrift-compiler
$ curl -O http://apache.claz.org/thrift/0.10.0/thrift-0.10.0.tar.gz
$ tar xvf thrift-0.10.0.tar.gz
$ pushd thrift-0.10.0
$ ./configure \
     --with-lua=no \
     --with-python=no \
     --with-php=no \
     --with-ruby=no \
     --prefix=/usr/local/mapd-deps
$ make -j $(nproc)
$ sudo make install
$ popd


Folly 是一个有 11 个组件的 C++ 算法库。它由 Facebook 发布,在 MapD 源代码中到处都有使用。下面是从资源编译、创建该算法库的步骤:


$ curl -O -L https://github.com/facebook/folly/archive/v2017.04.10.00.tar.gz
$ tar xvf v2017.04.10.00.tar.gz
$ pushd folly-2017.04.10.00/folly
$ autoreconf -ivf
$ ./configure \
     --prefix=/usr/local/mapd-deps
$ make -j $(nproc)
$ sudo make install
$ popd


Bison 是 MapD 生成 SQL 解析器(parser)的两个库之一。下面是编译、创建步骤:


$ curl -O -L https://github.com/jarro2783/bisonpp/archive/1.21-45.tar.gz
$ tar xvf 1.21-45.tar.gz
$ pushd bisonpp-1.21-45
$ ./configure
$ make -j $(nproc)
$ sudo make install
$ popd


下面,在 MapD 编译之前,要确保我们用的是想要的那个 LLVM 二进制版本。


$ for BIN in llvm-config llc clang clang++ clang-format
 do
     sudo update-alternatives \
         --install \
         /usr/bin/$BIN \
         $BIN \
         /usr/lib/llvm-3.8/bin/$BIN \
         1
 done


我会用如下代码,在环境变量中添加可执行文件和库文件的路径。


$ sudo vi /etc/profile.d/mapd-deps.sh
LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
LD_LIBRARY_PATH=/usr/lib/jvm/default-java/jre/lib/amd64/server:$LD_LIBRARY_PATH
LD_LIBRARY_PATH=/usr/local/mapd-deps/lib:$LD_LIBRARY_PATH
LD_LIBRARY_PATH=/usr/local/mapd-deps/lib64:$LD_LIBRARY_PATH
PATH=/usr/local/cuda/bin:$PATH
PATH=/usr/local/mapd-deps/bin:$PATH
export LD_LIBRARY_PATH PATH
$ sudo chmod +x /etc/profile.d/mapd-deps.sh
$ source /etc/profile.d/mapd-deps.sh


编译 MapD

我会复制 MapD 的核心源代码资源库,然后检查 21fc39 commit。只用比较好的发布版本或者 master branch 是一个好主意。但出于让这些指令前后一致的考虑,这里的代码实现只针对那一特定的 commit。


$ git clone https://github.com/mapd/mapd-core.git
$ cd mapd-core
$ git checkout 21fc39


我会为 MapD 创建一个 build 文件夹,在开启修补漏洞的前提下编译源代码。


$ cd ~/mapd-core/build
$ cmake -DCMAKE_BUILD_TYPE=debug ..
$ make -j $(nproc)


运行 MapD

经过  MapD 的二进制编译,我会创建一个数据文件夹,初始化,然后设置 MapD 的数据库服务器和它的 Immerse 网络服务器。


$ mkdir ~/mapd-data
$ bin/initdb --data ~/mapd-data
$ bin/mapd_server --data ~/mapd-data &
$ bin/mapd_web_server &


请注意,这些服务与所有网络界面绑定。所以,请确认 TCP 端口  9090、9091 和 9092,对你不想访问的系统用防火墙阻止。Immerse 网络服务器应该在 TCP 端口 9092 上。


$ open http://127.0.0.1:9092/


在 Immerse UI 的顶端,有一个到 SQL 编辑器的链接。哪里,你可以在 MapD 环境里运行 SQL。注意只有检索文本框里的第一行 SQL 命令会被执行,所以下面的三个请求每次单个运行。


CREATE TABLE testing (
   pk INTEGER
);
INSERT INTO testing (pk)
VALUES (123);
SELECT *
FROM testing
LIMIT 1;


如果你从命令行与 MapD 交互,下面的代码会设置它们的 CLI,并使用默认证书和数据库连接到 MapD 服务器。


$ bin/mapdql -p HyperInteractive


学习更多设置数据库的操作,请查询 MapD 官方使用指南以及 GitHub 页面。




====================================分割线================================

本文作者:三川
本文转自雷锋网禁止二次转载, 原文链接
相关实践学习
基于阿里云DeepGPU实例,用AI画唯美国风少女
本实验基于阿里云DeepGPU实例,使用aiacctorch加速stable-diffusion-webui,用AI画唯美国风少女,可提升性能至高至原性能的2.6倍。
目录
相关文章
|
6天前
|
数据库 开发者
参与TiDB社区,共筑开源数据库的未来
【2月更文挑战第25天】TiDB社区作为开源数据库项目的重要一环,汇聚了众多数据库爱好者与开发者。本文旨在鼓励读者积极参与TiDB社区,通过贡献代码、分享经验、参与讨论等方式,共同推动TiDB的发展。文章将介绍TiDB社区的特点、参与方式以及贡献的意义,帮助读者了解并融入这个充满活力的开源社区。
|
6天前
|
数据库
电子书阅读分享《开源数据库工作室推广计划》
电子书阅读分享《开源数据库工作室推广计划》
20 1
|
6天前
|
存储 关系型数据库 MySQL
【专栏】在众多开源数据库中,MySQL和PostgreSQL无疑是最受欢迎的两个
【4月更文挑战第27天】MySQL与PostgreSQL是两大主流开源数据库,各有特色。MySQL注重简单、便捷和高效,适合读操作密集场景,而PostgreSQL强调灵活、强大和兼容,擅长并发写入与复杂查询。MySQL支持多种存储引擎和查询缓存,PostgreSQL则具备扩展性、强事务支持和高可用特性。选择时应考虑项目需求、团队技能和预期收益。
|
6天前
|
存储 机器学习/深度学习 API
开源向量数据库比较:Chroma, Milvus, Faiss,Weaviate
该文探讨了向量数据库在语义搜索和RAG中的核心作用,并介绍了四个开源向量数据库:Chroma、Milvus、Faiss和Weaviate。这些数据库用于存储高维向量,支持基于相似性的快速搜索,改变了传统的精确匹配方法。文章详细比较了它们的特性,如Chroma的易用性,Milvus的存储效率,Faiss的GPU加速,和Weaviate的图数据模型。选择合适的数据库取决于具体需求,如数据类型、性能和使用场景。
132 0
|
6天前
|
关系型数据库 OLAP 分布式数据库
「杭州*康恩贝」4月26日PolarDB开源数据库沙龙,开启报名!
4月26日周五,PolarDB开源社区联合康恩贝将共同举办开源数据库技术沙龙,本次沙龙我们邀请了众多数据库领域的专家,期待大家的参与!
「杭州*康恩贝」4月26日PolarDB开源数据库沙龙,开启报名!
|
6天前
|
运维 关系型数据库 分布式数据库
「合肥 * 讯飞」4 月 19 日 PolarDB 开源数据库沙龙,报名中!
4月19日周五,PolarDB开源社区联合科大讯飞共同举办开源数据库技术沙龙,本次沙龙我们邀请了众多数据库领域的专家,期待大家的参与!
「合肥 * 讯飞」4 月 19 日 PolarDB 开源数据库沙龙,报名中!
|
6天前
|
NoSQL 关系型数据库 Linux
Star 1.6k!当Web遇上Linux和数据库!一站式管理平台的开源之旅!
Star 1.6k!当Web遇上Linux和数据库!一站式管理平台的开源之旅!
|
6天前
|
数据采集 JSON 小程序
GitHub 开源数据库 chinese-poetry,最全中文诗歌古典文集数据库
GitHub 开源数据库 chinese-poetry,最全中文诗歌古典文集数据库
|
6天前
|
关系型数据库 MySQL 数据处理
MySQL vs. PostgreSQL:选择适合你的开源数据库
在当今信息时代,开源数据库成为许多企业和开发者的首选。本文将比较两个主流的开源数据库——MySQL和PostgreSQL,分析它们的特点、优势和适用场景,以帮助读者做出明智的选择。
|
6天前
|
Java 数据库 索引
最强阿里及大厂350道面试大全:框架+数据库+并发+开源+微服务
无论是对于刚入行工作还是已经工作几年的java开发者来说,面试求职始终是你需要直面的一件事情。首先梳理自己的知识体系,针对性准备,会有事半功倍的效果。我们往往会把重点放在技术上,而忽略了人事部分,实际上人事面试也会影响到最终的结果,把每一个环节做好,最终的结果自然不会差。