大致步骤
机器免密
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