之前项目组之中一位离职的同事给我们搭建的数据平台, 用的是Suse。 后来因为计算平台需要迁移到Spark之上, 我们就需要让Spark能方便的读取到SUSE之中的数据文件。
方案1:SUSE NFS Server
因为之前项目组最常用的文件分享协议就是NFS了。 我们的FreeNas服务器上面, 存储了几十T的数据文件。
因此我们首先尝试的是NFS的方法。 Google之后:
尝试了以下命令:
[code lang=shell]
yast2 -i nfs-kernel-server
# or zypper install -y nfs-kernel-server
[/code]
但是不管上面哪个命令, 都会报错:
[code lang=bash]
Warning: Legacy commandline option -y/--no-confirm detected. Please use -n/--non-interactive instead.
File '/repodata/repomd.xml' not found on medium 'http://download.opensuse.org/update/13.2/'
Abort, retry, ignore? [a/r/i/? shows all options] (a): a
ABORT request: Aborting requested by user
[/code]
非常奇怪的问题, 后来又经过Google, 发现原因:
Yes, @tboerger is right. 13.2 reached EOL, this is why the repositories are no longer around. This doesn't depend on this project.
From: https://github.com/openSUSE/docker-containers-build/issues/23
敢情是这位哥们用的SUSE版本太老了?!
方案2: Samba出马
正在一筹莫展甚至想把数据文件全部迁移到另外一个Ubuntu机器之时, 忽然发现这一台SUSE已经安装了Samba Server
服务, 只是没有启用而已。
现在回想起来, 这个SUSE的Samba Server的安装,也真是奇葩, 官网文档写的也很不详细。
现在总结一下:
- 执行命令:
yast2
如图选中“Samba Server”
-
Workgroup 默认, 选择Next
-
Domain Controller 依然默认, Next
这一个功能我猜是某些域名才能访问。 具体没有试过~
-
这一步要注意, 选择启动的时候自动启动
-
注意, 需要手动设定账号信息, 否则在其他地方能看到目录, 就是进不去
假设原来已经有一个用户账号
hadoop
, 执行下面的命令, 给这个账号设置一下密码:[code lang=bash]
suse2:~ # smbpasswd -a hadoop
New SMB password:
Retype new SMB password:
Added user hadoop.
[/code]这里设置的密码,可以跟原来的SSH密码一样。
设置完成之后, 我们可以在Windows上面直接使用UNC的方式访问了:
UNC的方式: \\10.206.132.119
Ubuntu Client Mount Samba server
因为我们的需求是让Spark能方便的读取SMB服务器上面的数据, 最方便的方法还是直接mount。
当然可以使用smbclient, 不过在Spark之中读取数据的时候, 就不那么友好了。
mount命令也很简单,参考下面的格式:
[code lang=shell]
sudo mount //10.206.132.119/users/hadoop/airsupport_da /data/airsupport/airsupport_da -o user=hadoop,password=xxxx
[/code]
事后小结:
-
SUSE的文档相比Ubuntu感觉真心很少,而且也不是很友好。
很多网友的文章, 感觉也是很久以前的东西。 特别是看到有人说某某东西EOS之后, 内心是有一些崩溃的。 -
后来简单调查了一下, Samba的稳定性确实要比NFS要好一些。
我们的NFS Server 经常命令行卡死。
解决方案: 不好意思, 暂时无解~ 重启服务器吧。。。 -
本文原创, 转载需要注明原文:
https://www.flyml.net/2018/01/16/replace-nfs-with-samba/
文章评论