搭建xorbits容器集群,大规模数据去重利器

大致步骤

机器免密
pdsh机器安装
容器启动
去重任务执行

机器免密

在集群物理机上主节点上生成秘钥

# 秘钥生成在/root/.ssh 目录
ssh-keygen

这里采用一个偷懒的做法所有机器共用一套秘钥
新建一个expect脚本ssh_pass.sh

#!/usr/bing/expect -f
set i [lindex $argv 0]
spawn scp -r /root/.ssh 192.168.112.${i}:/root/
expect{
		"yes/no" {send yes\r}
		"password:" {send "your password\r"}
}

expect{
		"yes/no" {send yes\r}
		"password:" {send "your password\r"}
}

expect重复两次的原因是因为第一遍登录需要确认是否要记住机器,第二遍是自动输入密码,\r是输入回车
使用时只用执行

#将本机秘钥拷贝到192.168.112.20,实现本机对192.168.112.20的免密
./ssh_pass.sh 20

机器较少的话可以手动执行复制秘钥

安装pdsh

apt update
apt install pdsh

# 常规用法介绍
# 在机器192.168.112.[20-30]上执行 ls 命令
#pdsh -w ssh:192.168.112.[20-30]  ls

编写容器启动脚本

master_node.sh

docker run -itd --gpus=all --rm --ipc=host --net=host -v /data:/data --name xorbits_dedup xorbits_dedup:v1 bash /data/start_master.sh

start_master.sh

local_ip =`ifconfig | grep 192.168.112 | awk '{print $2}' `
xorbits-supervisor -H ${local_ip} -p 7001 -w 7005

worker_node.sh

docker run -itd --gpus=all --rm --ipc=host --net=host -v /data:/data --name xorbits_dedup xorbits_dedup:v1 bash /data/start_worker.sh

start_worker.sh -s 后的参数替换成你自己的master_node的ip

local_ip =`ifconfig | grep 192.168.112 | awk '{print $2}' `
xorbits-worker -H ${local_ip} -p 7001  -s 192.168.112.20:7001

启动机器

在主节点(192.168.112.20)上执行

# 启动主节点
sh master_node.sh
#从节点
pdsh -w ssh:192.168.112.[21-30] sh worker_node.sh

在一台有浏览器的主机上查看集群运行状态
192.168.112.20:7005

去重

官方文档地址:https://doc.xorbits.io/en/latest/getting_started/index.html

import numpy as np
import xorbits.pandas as pd
from xorbits.experimental import dedup
import xorbits

xorbits.init("http://192.168.112.20:7005")

words = list("abcdefghijklmnopqrstuvwxyz")
df = pd.DataFrame(
    {
        "text": [
            " ".join(["".join(np.random.choice(words, 5)) for i in range(50)])
            for _ in np.arange(10)
        ]
        * 2,
    }
)
res = dedup(df, col="text", method="exact") # for 'exact' method
res = dedup(df, col="text", method="minhash", threshold=0.8, num_perm=128, min_length=5, ngrams=5, seed=42) # for 'minhash' method
  • 7
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值