首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >构建高可用文件存储:深入解析FastDFS集群部署的关键步骤

构建高可用文件存储:深入解析FastDFS集群部署的关键步骤

原创
作者头像
Lion 莱恩呀
发布于 2024-12-29 13:23:32
发布于 2024-12-29 13:23:32
27900
代码可运行
举报
文章被收录于专栏:后端开发技术后端开发技术
运行总次数:0
代码可运行

一、结构

图片
图片

部署2个tracker server,两个storage server。 模拟测试时多个tracker可以部署在同一台机器上,但是storage不能部署在同一台机器上。 如果是云服务器一定要记得开放对应的端口。

示例:

服务器地址

服务程序

对应配置文件

端口区别

192.168.0.104

fdfs_trackerd

tracker_22122.conf

22122

192.168.0.104

fdfs_trackerd

tracker_22123.conf

22123

192.168.0.104

fdfs_storage

storage_group1_23000.conf

192.168.0.105

fdfs_storage

storage_group1_23000.conf

注意:storage是要部署在不同的服务器上,修改端口是没有用。

二、服务器配置(192.168.0.104)

(1)把现有的tracker、storage全部停止。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 查询tracker的PID
ps -ef | grep tracker
# kill进程
kill -9 11027

# 查询storage的PID
ps -ef | grep storage
# kill进程
kill -9 17975

(2)建立配置文件和存储目录。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cd /etc/fdfs 
cp tracker.conf.sample tracker_22122.conf 
cp tracker.conf.sample tracker_22123.conf 
mkdir /home/fastdfs/tracker_22122 # 同一个服务器创建多个tracker存储路径 
mkdir /home/fastdfs/tracker_22123 
cp storage.conf.sample storage_group1_23000.conf 
mkdir /home/fastdfs/storage_group1_23000

(3)然后要修改对应的配置文件,详细见如下。

2.1、修改tracker_22122.conf配置文件

在这里,tracker_22122.conf 只修改一下 Tracker 存储日志和数据的路径。主要修改port、base_path路径。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 启用配置文件(默认为 false,表示启用配置文件) 
disabled=false 
# Tracker 服务端口(默认为 22122) 
port=22122 
# 存储日志和数据的根目录 
base_path=/home/fastdfs/tracker_22122

启动tracker_22122:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo /usr/bin/fdfs_trackerd /etc/fdfs/tracker_22122.conf

2.2、修改tracker_22123.conf配置文件

在这里,tracker_22123.conf只修改一下 Tracker 存储日志和数据的路径。主要修改port、base_path路径。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 启用配置文件(默认为 false,表示启用配置文件) 
disabled=false 
# Tracker 服务端口(默认为 22122) 
port=22123
# 存储日志和数据的根目录 
base_path=/home/fastdfs/tracker_22123

启动tracker_22123:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo /usr/bin/fdfs_trackerd /etc/fdfs/tracker_22123.conf

此时查看启动的tracker:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 ps -ef | grep tracker

信息显示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
root       2424      1  0 13:10 ?        00:00:00 /usr/bin/fdfs_trackerd /etc/fdfs/tracker_22122.conf
root       2455      1  0 13:12 ?        00:00:00 /usr/bin/fdfs_trackerd /etc/fdfs/tracker_22123.conf

2.3、修改storage_group1_23000.conf配置文件

在这里,storage_group1_23000.conf 只是修改一下 storage 存储日志和数据的路径。主要修改:port、base_path、store_path0、tracker_server。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 启用配置文件(默认为 false,表示启用配置文件) 
disabled=false 
# Storage 服务端口(默认为 23000) 
port=23000 
# 数据和日志文件存储根目录 
base_path=/home/fastdfs/storage_group1_23000 
# 存储路径,访问时路径为 M00 
# store_path1 则为 M01,以此递增到 M99(如果配置了多个存储目录的话,这里只指定 1 个) 
store_path0=/home/fastdfs/storage_group1_23000 
# Tracker 服务器 IP 地址和端口,单机搭建时也不要写 127.0.0.1 
# tracker_server 可以多次出现,如果有多个,则配置多个 
tracker_server=192.168.0.104:22122 
tracker_server=192.168.0.104:22123

启动storage_group1_23000:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo /usr/bin/fdfs_storaged /etc/fdfs/storage_group1_23000.conf

三、服务器配置(192.168.0.105)

(1)把现有的tracker、storage全部停止。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 查询tracker的PID
ps -ef | grep tracker
# kill进程
kill -9 17380

# 查询storage的PID
ps -ef | grep storage
# kill进程
kill -9 15937

(2)建立配置文件和存储目录。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cd /etc/fdfs 
sudo cp storage.conf.sample storage_group1_23000.conf 
sudo mkdir /home/fastdfs/storage_group1_23000

(3)然后要修改对应的配置文件。在这里,storage_group1_23000.conf 只是修改一下 storage 存储日志和数据的路径,主要修改:port、base_path、store_path0、tracker_server。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 启用配置文件(默认为 false,表示启用配置文件) 
disabled=false 
# Storage 服务端口(默认为 23000) 
port=23000 
# 数据和日志文件存储根目录 
base_path=/home/fastdfs/storage_group1_23000
 # 存储路径,访问时路径为 M00 
 # store_path1 则为 M01,以此递增到 M99(如果配置了多个存储目录的话,这里只指定 1 个) 
 store_path0=/home/fastdfs/storage_group1_23000 
 # Tracker 服务器 IP 地址和端口,单机搭建时也不要写 127.0.0.1 
 # tracker_server 可以多次出现,如果有多个,则配置多个 
tracker_server=192.168.0.104:22122 
tracker_server=192.168.0.104:22123

(4)启动storage_group1_23000。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/usr/bin/fdfs_storaged /etc/fdfs/storage_group1_23000.conf

四、测试

4.1、配置client.conf

(1)创建client目录:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mkdir /home/fastdfs/client

(2)修改client.conf。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 修改client的base path路径 
base_path = /home/fastdfs/client 
# 配置tracker server地址 
tracker_server=192.168.0.104:22122 
tracker_server=192.168.0.104:22123

4.2、配置mod_fastdfs.conf

主要修改tracker_server、url_have_group_name、store_path0。 路径:/etc/fdfs/mod_fastdfs.conf。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# Tracker 服务器IP和端口修改 
tracker_server=192.168.0.104:22122 
tracker_server=192.168.0.104:22123
# url 中是否包含 group 名称,改为 true,包含 group 
url_have_group_name = true 
# 配置 Storage 信息,修改 store_path0 的信息 
store_path0=/home/fastdfs/storage_group1_23000 
# 其它的一般默认即可,例如 
base_path=/tmp 
group_name=group1 
# storage服务器端口号 
storage_server_port=23000 
#存储路径数量, 必须和storage.conf文件一致 
store_path_count=1

4.3、检测是否正常启动

分别在两台服务器(192.168.0.104和192.168.0.105)执行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/usr/bin/fdfs_monitor /etc/fdfs/storage_group1_23000.conf

正常则存在2个Active的storage。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[2022-11-13 13:30:10] DEBUG - base_path=/home/fastdfs/storage_group1_23000, connect_timeout=5, network_timeout=60, tracker_server_count=2, anti_steal_token=0, anti_steal_secret_key length=0, use_connection_pool=1, g_connection_pool_max_idle_time=3600s, use_storage_id=0, storage server id count: 0

server_count=2, server_index=1

tracker server is 192.168.0.106:22123

group count: 1

Group 1:
group name = group1
disk total space = 99,701 MB
disk free space = 87,166 MB
trunk free space = 0 MB
storage server count = 2
active server count = 2
storage server port = 23000
storage HTTP port = 8888
store path count = 1
subdir count per path = 256
current write server index = 0
current trunk file id = 0

	Storage 1:
		id = 192.168.0.105
		ip_addr = 192.168.0.105  ACTIVE
		http domain = 
		version = 6.07
		join time = 2022-11-13 13:22:41
		up time = 2022-11-13 13:22:41
		total storage = 99,701 MB
		free storage = 87,168 MB
		upload priority = 10
		store_path_count = 1
		subdir_count_per_path = 256
		storage_port = 23000
		storage_http_port = 8888
		current_write_path = 0
		source storage id = 192.168.0.106
		if_trunk_server = 0
		connection.alloc_count = 256
		connection.current_count = 1
		connection.max_count = 1
		total_upload_count = 0
		success_upload_count = 0
		total_append_count = 0
		success_append_count = 0
		total_modify_count = 0
		success_modify_count = 0
		total_truncate_count = 0
		success_truncate_count = 0
		total_set_meta_count = 0
		success_set_meta_count = 0
		total_delete_count = 0
		success_delete_count = 0
		total_download_count = 0
		success_download_count = 0
		total_get_meta_count = 0
		success_get_meta_count = 0
		total_create_link_count = 0
		success_create_link_count = 0
		total_delete_link_count = 0
		success_delete_link_count = 0
		total_upload_bytes = 0
		success_upload_bytes = 0
		total_append_bytes = 0
		success_append_bytes = 0
		total_modify_bytes = 0
		success_modify_bytes = 0
		stotal_download_bytes = 0
		success_download_bytes = 0
		total_sync_in_bytes = 0
		success_sync_in_bytes = 0
		total_sync_out_bytes = 0
		success_sync_out_bytes = 0
		total_file_open_count = 0
		success_file_open_count = 0
		total_file_read_count = 0
		success_file_read_count = 0
		total_file_write_count = 0
		success_file_write_count = 0
		last_heart_beat_time = 2022-11-13 13:29:46
		last_source_update = 1970-01-01 08:00:00
		last_sync_update = 1970-01-01 08:00:00
		last_synced_timestamp = 1970-01-01 08:00:00 
	Storage 2:
		id = 192.168.0.106
		ip_addr = 192.168.0.106  ACTIVE
		http domain = 
		version = 6.07
		join time = 2022-11-13 13:17:34
		up time = 2022-11-13 13:17:34
		total storage = 99,701 MB
		free storage = 87,166 MB
		upload priority = 10
		store_path_count = 1
		subdir_count_per_path = 256
		storage_port = 23000
		storage_http_port = 8888
		current_write_path = 0
		source storage id = 
		if_trunk_server = 0
		connection.alloc_count = 256
		connection.current_count = 1
		connection.max_count = 1
		total_upload_count = 0
		success_upload_count = 0
		total_append_count = 0
		success_append_count = 0
		total_modify_count = 0
		success_modify_count = 0
		total_truncate_count = 0
		success_truncate_count = 0
		total_set_meta_count = 0
		success_set_meta_count = 0
		total_delete_count = 0
		success_delete_count = 0
		total_download_count = 0
		success_download_count = 0
		total_get_meta_count = 0
		success_get_meta_count = 0
		total_create_link_count = 0
		success_create_link_count = 0
		total_delete_link_count = 0
		success_delete_link_count = 0
		total_upload_bytes = 0
		success_upload_bytes = 0
		total_append_bytes = 0
		success_append_bytes = 0
		total_modify_bytes = 0
		success_modify_bytes = 0
		stotal_download_bytes = 0
		success_download_bytes = 0
		total_sync_in_bytes = 0
		success_sync_in_bytes = 0
		total_sync_out_bytes = 0
		success_sync_out_bytes = 0
		total_file_open_count = 0
		success_file_open_count = 0
		total_file_read_count = 0
		success_file_read_count = 0
		total_file_write_count = 0
		success_file_write_count = 0
		last_heart_beat_time = 2022-11-13 13:30:09
		last_source_update = 1970-01-01 08:00:00
		last_sync_update = 1970-01-01 08:00:00
		last_synced_timestamp = 1970-01-01 08:00:00

4.4、测试上传文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/usr/bin/fdfs_upload_file /etc/fdfs/client.conf /etc/fdfs/storage_group1_23000.conf

查看两台服务器下的00/00目录是否存在相同的文件。

4.5、测试下载文件

(1)测试正常下载:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
fdfs_download_file /etc/fdfs/client.conf

(2)停止192.168.0.104的storage,然后测试下载。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/usr/bin/fdfs_storaged /etc/fdfs/storage_group1_23000.conf stop

测试下载:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
fdfs_download_file /etc/fdfs/client.conf

此时还可以正常下载。 (3)继续停止另一个storage server(192.168.0.105),再测试下载。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/usr/bin/fdfs_storaged /etc/fdfs/storage_group1_23000.conf stop

测试下载:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
fdfs_download_file /etc/fdfs/client.conf

此时就报错了,因为storage都已经停止了。

另外,可以使用浏览器去测试:http://(IP地址):80/group1/M00/00/00/(fileid)。

4.6、恢复storage的运行

两台服务器都执行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/usr/bin/fdfs_storaged /etc/fdfs/storage_group1_23000.conf

可以先恢复一台storage,然后上传文件,再恢复另一台storage,然后在新启动的storage观察文件是否被同步。

4.7、报错处理

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
tracker_query_storage fail, error no: 28, error info: No space left on device

提示磁盘空间不足。 在tracker xx.conf中,将reserved_storage_space的值修改为5%,预留5%的磁盘空间。

五、参考

  1. FastDFS tracker leader机制介绍。
  2. FastDFS配置详解之Tracker配置。
  3. FastDFS配置详解之Storage配置。
  4. FastDFS集群部署指南。

六、总结

本文旨在深入解析FastDFS集群部署的关键步骤,帮助读者构建高可用的文件存储系统。

1. FastDFS集群架构:介绍FastDFS的基本架构和关键组件,包括跟踪器(Tracker)和存储节点(Storage),帮助读者理解集群部署的基本原理。

2. 安装和配置FastDFS:详细介绍FastDFS的安装和配置过程,包括跟踪器节点和存储节点的设置,以及集群的初始化和配置文件的编辑等步骤。

3. 集群扩展和负载均衡:探讨如何扩展FastDFS集群的容量和性能,并介绍常用的负载均衡方法,以确保高效的文件存储和访问。

4. 故障处理和监控:介绍常见的故障情况和故障处理方法,以及如何设置监控和报警系统,保障集群的稳定运行。

通过本文,读者将深入了解FastDFS集群部署的关键步骤和技巧,了解构建高可用文件存储系统所需的核心知识。将提供清晰的指导和实践建议,帮助读者成功部署和管理FastDFS集群,实现高可用的文件存储环境。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
2022 最新 R 语言 与 RStudio 安装配置教程
R 语言官网:https://cran.r-project.org/,进入 R 语言官网,Downloade R for Windows。
叶庭云
2022/10/25
8.1K0
2022 最新 R 语言 与 RStudio 安装配置教程
如何让Jupyter Notebook支持多种编程语言?
不满意Jupyter Notebook只有Python 2环境,还打算让它支持Python 3与R?没问题,本文一步步帮助你实现这个愿望。
王树义
2018/08/22
2.8K0
如何让Jupyter Notebook支持多种编程语言?
金融科技:建模工作环境
我基于公司申请的Ubuntu20.10系统的服务器搭建过可供多人使用Jupyter Hub建模平台,支持Python工作、R工作和Linux工作三种方式,同时,也可以做账户管理、权限管理、共享管理等。我也基于自己的本地机器,在Win系统上面搭建建模工作环境,支持Python工作和R工作。顺便说一下,我在金融科技行业做数据科学工作,Python语言和R语言,我都会使用。我从不做语言的好坏选择,只看语言是否有利于我解决问题。
陆勤_数据人网
2022/01/29
8230
金融科技:建模工作环境
macOS下Jupyter Notebook的安装以及对R语言的支持
Jupyter Notebook是前身为Ipython的一种在线编译器,因此要让Jupyter Notebook能够支持R语言,需要安装一个较为关键的包:IRkernel IRkernel需要在Jupyter Notebook的Terminal中启动R语言来进行安装
水煮麥楽雞
2022/11/20
1.2K0
macOS下Jupyter Notebook的安装以及对R语言的支持
🤔 Python | 24K纯新手的Python环境搭建之路!~(Anaconda + Jupyter)
1写在前面 最近在搞Machine Learning,R中的包实在是不太给力,这方面还是要看Python的。😂 这里和大家分享一下我的Python环境搭建之路,图文介绍非常详细,希望帮助到大家。😘 由于我的电脑是M1 芯片的Macbook,以下均以这个配置为例啦。🥳 2Anaconda的下载与安装 2.1 什么是Anaconda 首先我们先下载Anaconda吧,Anaconda是包管理器和环境管理器。😎 大家是不是经常听到conda,miniconda和anaconda三个名词,我也是傻傻分布清楚,就去查
生信漫卷
2023/02/24
3.8K0
🤔 Python | 24K纯新手的Python环境搭建之路!~(Anaconda + Jupyter)
在VSCode中调用Jupyterlab和R
大部分共享服务器没有root权限,装不了Rstudio-server。而R终端虽然可以完成一些基本任务,但对于数据分析、画图等高级操作则显得不够便利。因此,我们需要一种能够轻松应对这些任务的IDE。幸运的是,Jupyterlab为我们提供了一个交互式计算环境,让我们可以直接输入代码并立即查看结果。这个功能强大的工具已经成为了数据分析领域的瑰宝,被广泛应用于各种数据分析、可视化等任务中。而VS Code是一个非常流行的编辑器,而且支持多种编程语言和工具。将JupyterLab集成到VS Code中,可以让你在一个统一的开发环境中完成代码编辑、调试和运行等操作,避免了频繁切换不同软件带来的不便。本文书接上回(,大家需要先安装并配置好Jupyterlab。如果你对下面的教程比较迷茫,那么你可以先行学习Linux教程:十小时学会Linux 生信Linux及服务器使用技巧
Biomamba 生信基地
2025/01/15
2.3K0
Nteract:可以在桌面运行的Jupyter笔记本(安装R+Julia+Python)
https://nteract.io/ 首先官网在这里 https://github-releases.githubusercontent.com/37496521/61a31700-5f51-11
云深无际
2021/09/14
2.3K0
Nteract:可以在桌面运行的Jupyter笔记本(安装R+Julia+Python)
R也可以jupyter
需要安装的R包 repr, IRdisplay, evaluate, crayon, pbdZMQ, devtools, uuid, digest,IRkernel 使用命令 install.packages(c('repr', 'IRdisplay', 'evaluate', 'crayon', 'pbdZMQ', 'devtools', 'uuid', 'digest','IRkernel')) 将jupyter和R进行关联 # 只在当前用户下安装IRkernel::installspec()# 或者是
用户3577892
2020/06/12
4990
133-R工具指南24-vscode在ipynb中使用R远程开发
虽然在[[117-R工具指南23-利用vscode进行R的远程开发,并打通conda环境]] 中,可以通过vscode 选择特定的环境使用R。
北野茶缸子
2022/12/10
2.1K0
133-R工具指南24-vscode在ipynb中使用R远程开发
Python编程神器Jupyter Notebook使用的28个秘诀(附代码)
[ 导读 ]最近做实验一直是用Jupyter Notebook编程,有一种打草稿的便捷感,在dataquest上看到一篇博客总结了28种Jupyter Notebook的使用技巧。为了方便大家理解,对原文一个简略的地方进行了适当的解释和扩充。希望大家在用Jupyter Notebook编程时可以更加爽快。
数据派THU
2019/12/31
4.9K0
Python编程神器Jupyter Notebook使用的28个秘诀(附代码)
手把手 | 哇!用R也可以跑Python了
大数据文摘作品 编译:大茜、钱天培 R还是Python? 真是个千古难题! 如果你主要从事数据分析、统计建模和可视化,R大概是你的不二之选。但如果你还想来搞点深度学习,整个自然语言处理,那你可还真得用Python。 如果你处于交叉领域,很可能就需要两种语言切换。后果是,写个for loop还出bug真的是家常便饭。报警! 面对这种困境的绝不止你一个人!最近的KDnuggets Analytics的软件调查中,Python和R位居数据科学和机器学习软件的前两名。 如果你真的想提高你在数据科学领域的能力,这两种
大数据文摘
2018/05/23
9970
RNA-seq入门实战(零):RNA-seq流程前的准备——Linux与R的环境创建
连续两次求贤令:曾经我给你带来了十万用户,但现在祝你倒闭,以及 生信技能树知识整理实习生招募,让我走大运结识了几位优秀小伙伴!大家开始根据我的ngs组学视频进行一系列公共数据集分析实战,其中几个小伙伴让我非常惊喜,不需要怎么沟通和指导,就默默的完成了一个实战!
生信技能树
2022/06/27
3.4K0
RNA-seq入门实战(零):RNA-seq流程前的准备——Linux与R的环境创建
在jupyter里面运行conda虚拟环境的R
还可以通过jupyter代码框中运行.libPaths()查看是否是想要的R环境。
生信编程日常
2020/10/10
2.4K0
在jupyter里面运行conda虚拟环境的R
生信入门马拉松之R语言基础-函数和R包(day 4)
生物R包网站Bioconductor-安装方式BiocManager::install("包名")
Crazy_George
2024/04/14
4390
R语言包管理
R 语言的一大优势就是有各种各样的扩展包,所谓 R 扩展包,就是将数据处理的算法通过 R函数来实现,再加上测试数据,说明文档整合在一起,就是 R 的扩展包。在使用 R 的过程中,肯定需要使用到 R 的包,因此,需要掌握 R 包的管理,包括包的查找,安装,加载,升级,取消加载,删除,查看帮助文档等等操作。
生信喵实验柴
2022/10/25
1.6K0
windows 安装 miniconda3 +jupyter lab ,使用系统R语言
觉得jupyter+R挺配的,可以每块代码直接在下面输出结果,适合R语言学习。我觉得我就是因为这个工具+生信技能树的R语言入门教程而入门的R语言。当然,入门一门语言很可能不能靠一本书,而是需要多本书才能实现。
用户1075469
2020/10/23
1.6K0
windows 安装 miniconda3 +jupyter lab ,使用系统R语言
04. R studio/R 工具指南(三:R包安装与使用常见问题)
mean(), list(), sample(),这些function 都来自于某package中。这些函数以及它们的package 都作为基础的包默认安装在了R中。(安装R 就会默认安装它们)
北野茶缸子
2021/12/17
2.7K0
04. R studio/R 工具指南(三:R包安装与使用常见问题)
使用jupyter notebook运行python和R
一个图形化的交互式运行环境,对于编程语言的学习和开发,特别是可视化方面,提供了极大的便利。比如在window上使用R语言进行绘图,在R语言自带的交互环境中,可以实时观测到代码的可视化效果,从而方便的进行参数调整。
生信修炼手册
2020/07/16
2.6K0
从 R 绘图入门看 R 语言学习方法论
因为一些网络素材引用不规范,我们的这个笔记被网络吞掉了一次。很多朋友在公众号后台催更,还好鲍志炜抽空抢救回来了,不负大家的等待。
生信技能树
2022/06/08
1K0
从 R 绘图入门看 R 语言学习方法论
Anaconda使用详解:从安装到高效管理Python环境
Anaconda是一款开源的Python和R语言的发行版本,其主要目的是为数据科学、机器学习、大数据处理和科学计算提供一个集成的开发环境。Anaconda集成了大量常用的数据科学库和工具,并附带了强大的环境管理和包管理功能,使得Python环境的配置和维护变得简单高效。本文将详细介绍Anaconda的安装、使用以及如何利用它来高效管理Python环境和包。
CoderJia
2024/10/18
1.6K0
Anaconda使用详解:从安装到高效管理Python环境
推荐阅读
相关推荐
2022 最新 R 语言 与 RStudio 安装配置教程
更多 >
LV.0
这个人很懒,什么都没有留下~
目录
  • 一、结构
  • 二、服务器配置(192.168.0.104)
    • 2.1、修改tracker_22122.conf配置文件
    • 2.2、修改tracker_22123.conf配置文件
    • 2.3、修改storage_group1_23000.conf配置文件
  • 三、服务器配置(192.168.0.105)
  • 四、测试
    • 4.1、配置client.conf
    • 4.2、配置mod_fastdfs.conf
    • 4.3、检测是否正常启动
    • 4.4、测试上传文件
    • 4.5、测试下载文件
    • 4.6、恢复storage的运行
    • 4.7、报错处理
  • 五、参考
  • 六、总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档