分布式大数据计算系统Dask分布式部署及使用

19 篇文章 0 订阅
9 篇文章 0 订阅
"""
dask: 多任务并行编程与任务调度
参考资料:
https://docs.dask.org/en/latest/deploying-cli.html
https://www.cnblogs.com/traditional/p/13759712.html

官网中文翻译版:
https://www.heywhale.com/home/column/610a486caca2460017a1d410?from=zhihudsk
"""

# 一、安装(已安装python3 直接跳入第3步,pip安装python库,如无法安装建议重装openssl,python3)
# 1.安装OpenSSL
yum install bzip2-devel
yum install libffi-devel -y
yum install -y zlib zlib-dev openssl-devel sqlite-devel bzip2-devel libffi libffi-devel gcc gcc-c++

# cd到一个下载目录,这里为/opt,openssl压缩包会被下载到/opt目录下,可任意设置已存在的文件夹
cd /opt
wget http://www.openssl.org/source/openssl-1.1.1.tar.gz  --no-check-certificate

tar -zxvf openssl-1.1.1.tar.gz

cd openssl-1.1.1

# 编译安装,安装路径为/usr/local/openssl
./config --prefix=/usr/local/openssl shared zlib

make && make install

# 添加环境变量
echo "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/openssl/lib" >>  /etc/profile

# 刷新环境变量
source /etc/profile

# 增加软连接
ln -s /usr/local/openssl/lib/libssl.so.1.1 /usr/lib64/libssl.so.1.1
ln -s /usr/local/openssl/lib/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1

# 2.安装 python3
# python官网下载python包传至/opt目录,并解压文件
tar -zxvf Python-3.8.3.tgz

cd Python-3.8.3

# 编译python3,安装目录为/usr/local/python3
./configure --prefix=/usr/local/python3 --with-openssl=/usr/local/openssl --enable-shared

make && make install

# 添加环境变量
echo "export PYTHON_PATH=$PYTHON_PATH:/usr/local/python3/bin" >>  /etc/profile

# 刷新环境变量
source /etc/profile


# 3.安装dask库
pip install "dask[array]"       # Install requirements for dask array
pip install "dask[dataframe]"   # Install requirements for dask dataframe
pip install "dask[diagnostics]" # Install requirements for dask diagnostics
pip install "dask[distributed]" # Install requirements for distributed dask

# 也可以直接安装complete完整版
pip install "dask[complete]"

# 安装分布式库
pip3 install distributed

# 安装pyarrow库
pip3 install pyarrow


# 分布式dask的启动
# 使用前提: 分布式的几台机器都安装了dask库,且以下运行无报错
# Master主节点启动服务:IP替换为自己机器的IP,需要与SlavesIP在一个网段,启动后会出现一个IP地址
# --host 指定IP, --port 指定端口
dask-scheduler --host 192.168.0.100 --port 8786
dask-scheduler --host 192.168.110.11 --port 8786
dask-scheduler --host 133.160.190.142 --port 8786

# 支节点启动服务,IP为上面启动后给出的IP
dask-worker 192.168.0.100:8786
dask-worker 192.168.110.11:8786

# 可视化界面访问,浏览器访问一下地址,IP为主节点IP,端口为默认的8787
http://192.168.0.100:8787
http://192.168.110.11:8787

# 5.dask的使用
"""
说明:
1.client IP为主节点的IP
2.csv来源为hdfs(Master为主节点映射的名称),由于是分布式执行,所以每个worker机器都需要获取到该文件
3.只有执行了compute操作之后,dask才会开始计算
计算的文件足够大,机器配置足够高才能体现出dask的优势
5.计算时,可以在web页面实时检测每个worker的执行情况
"""
import datetime

from dask import dataframe as dd
from dask.distributed import Client

if __name__ == '__main__':
    time1 =datetime.datetime.now()
    print("time1: %s" %time1)
    # 与dask主节点建立连接
    client = Client('192.168.0.100:8786', asynchronous=False)
    # 从hdfs读取文件
    df = dd.read_csv("hdfs://Master:9000/dask_data/123.csv")
    print("success: read csv success.")
    df = df.groupby(["id", "name"]).agg({
        "age": "sum", "year": "sum"
    }).reset_index()
    # 只有执行了compute操作后dask才会进行计算
    df.compute()
    print(df)
    client.close()
    time2 = datetime.datetime.now()
    print("time2: %s" %time2)
    print("use time:", time2 - time1)

# 6.如何让dask的to_csv生成的是csv而不是.part结尾的文件
可以使用dd.to_csv()函数,该函数有一个名为compression的参数,默认为None。将其设置为“infer”,即可生成CSV文件而不是.part文件

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

lytcreate.

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

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

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

打赏作者

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

抵扣说明:

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

余额充值