FastDfs分布式文件服务器 与HDFS分布式文件服务器

 FastDFS与HDFS的区别

hadoop的文件系统HDFS主要解决并行计算中分布式存储数据的问题。其单个数据文件通常很大,采用了分块(切分)存储的方式;

FastDFS主要用于大中网站,为小文件上传和下载提供在线服务。所以在负载均衡、动态扩容等方面都支持得比较好,FastDFS不会对文件进行分快(切分)存储。

HDFS集群部署 : HDFS集群部署

安装FastDfs

github下载FastDfs相关的文件

https://github.com/happyfish100/fastdfs  下载fastdfs文件  我这里下载的是5.11版本

下载libfastcommon 依赖

https://github.com/happyfish100/libfastcommon/tree/V1.0.36

解压fastdfs-5.11.tar.gz 和libfastcommon-1.0.36.zip

检查Linux上是否安装了 gcc、libevent、libevent-devel,若没有安装则安装:

yum install gcc libevent libevent-devel -y

切换到解压后的libfastcommon目录,执行make脚本进行编译

./make.sh

安装fastDfs

./make.sh
./make.sh install 

查看编译后的文件

FastDFS所有编译出来的文件存放在/usr/bin目录下,所有配置文件存放在/etc/fdfs目录下

另外注意需要把解压后的fastdfs-5.11/conf目录下的两个文件拷贝到/etc/fdfs/ 

cp http.conf /etc/fdfs/
cp mime.types /etc/fdfs/

FastDFS配置

[root@node01 admin]# cd /etc/fdfs/

[root@node01 fdfs]# vim tracker.conf

修改下面几个地方


# the base path to store data and log files
base_path=/export/fastdfs/tracker

# the tracker server port
port=22122

需要自己去创建文件夹/export/fastdfs/tracker

修改storage.conf文件

# the storage server port
port=23000
# the base path to store data and log files
base_path=/export/fastdfs/storage

# the paths must be exist
store_path0=/export/fastdfs/storage

# tracker_server can ocur more than once, and tracker_server format is
#  "host:port", host can be hostname or ip address
tracker_server=node01:22122

# the port of the web server on this storage server
http.server_port=8888

 vim client.conf

# the base path to store log files
base_path=/export/fastdfs/client

#HTTP settings
http.tracker_server_port=80


# tracker_server can ocur more than once, and tracker_server format is
#  "host:port", host can be hostname or ip address
tracker_server=node01:22122

 启动fastdfs服务:

fdfs_trackerd /etc/fdfs/tracker.conf
fdfs_storaged /etc/fdfs/storage.conf 

其他命令:

查看storage是否已经注册到了tracker下

fdfs_monitor /etc/fdfs/storage.conf

在data目录下会创建256个子目录 有256的平方个目录存储文件

重启storage:fdfs_storaged /etc/fdfs/storage.conf restart

重启tracker:fdfs_trackerd /etc/fdfs/tracker.conf restart
关闭tracker执行命令:fdfs_trackerd /etc/fdfs/tracker.conf stop
关闭storage执行命令:fdfs_storaged /etc/fdfs/storage.conf stop

fdfs命令格式
上传文件命令:fdfs_test <config_file> <operation> <local_filename>:
  config_file:配置文件的位置
  operation:upload,download,getmeta,setmeta,delete and query_servers,上传文件用的是upload
   local_filename:要上传的文件名字

下载文件命令:fdfs_test <config_file> download <group_name> <remote_filename>
    group_name: 要下载的文件所在的组名
    remote_filename:要下载的文件名(要指定在fastDFS中存储的名字)
   

删除文件命令:fdfs_test <config_file> delete <group_name> <remote_filename>:

上传a.txt文件

fdfs_test /etc/fdfs/client.conf  upload a.txt 

删除文件

fdfs_delete_file /etc/fdfs/client.conf 组名/远程文件

fdfs_delete_file /etc/fdfs/client.conf group1/M00/00/00/wKgdgF4XDSuAY38UAAAAJATU84Y083.txt group1/M00/00/00/wKgdgF4XDSuAY38UAAAAJATU84Y083.txt

或者

fdfs_test /etc/fdfs/client.conf delete 组名 远程文件名

例如:fdfs_test /etc/fdfs/client.conf delete group1 M00/00/00/wKgdgF4XDSuAY38UAAAAJATU84Y083.txt
 

FastDFS的HTTP访问

 FastDFS提供了一个Nginx扩展模块,利用该模块,我们可以通过Nginx访问已经上传到FastDFS上的文件,下载fastdfs-nginx-module   https://github.com/happyfish100/fastdfs-nginx-module

nginx下载地址:http://nginx.org/download/  下载版本为1.14.2

将Fastdfs的Nginx扩展模块源代码上传到Linux上,并解压

unzip fastdfs-nginx-module-1.20.zip

切换至解压后的Nginx主目录,执行配置操作
./configure --prefix=/home/admin/nginx_fdfd --add-module=/home/admin/fastdfs-nginx-module-master/src
--prefix:指定nginx安装路径
--add-module:指定fastDFS的nginx模块的源代码路径

进行编译
make
进行安装
make install

如果出现下面的问题: 

[root@node01 nginx-1.20.2]# make install
make -f objs/Makefile install
make[1]: Entering directory `/home/admin/nginx-1.20.2'
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -D_FILE_OFFSET_BITS=64 -DFDFS_OUTPUT_CHUNK_SIZE='256*1024' -DFDFS_MOD_CONF_FILENAME='"/etc/fdfs/mod_fastdfs.conf"'  -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs -I src/http -I src/http/modules -I /usr/local/include \
        -o objs/addon/src/ngx_http_fastdfs_module.o \
        /home/admin/fastdfs-nginx-module-master/src/ngx_http_fastdfs_module.c
In file included from /home/admin/fastdfs-nginx-module-master/src/common.c:26:0,
                 from /home/admin/fastdfs-nginx-module-master/src/ngx_http_fastdfs_module.c:6:
/usr/include/fastdfs/fdfs_define.h:15:27: fatal error: common_define.h: No such file or directory
 #include "common_define.h"

经过了系统的排查,最终得知,在安装FastDFS的时候,其中的函数声明、宏定义、函数原型被指到了 “ /usr/include/fastdfs /usr/include/fastcommon ” 目录下,如下图:

       而Nginx的扩展模块配置文件默认指定的目录为 “ /usr/include ”,找不到文件,才导致的上面的错误 “ 致命错误: common_define.h 的文件或目录不存在 ” ,解决这个问题,只需要将Nginx扩展模块的路径目录修改为上面正常的 “ /usr/include/fastdfs ” 即可,输入命令 [root@node01 fastdfs]# vim /home/admin/fastdfs-nginx-module-1.20/src/config  ,总共修改两项即可:

 修改为:

    ngx_module_incs="/usr/include/fastdfs /usr/include/fastcommon/"

修改为:

CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/" 

如果nginx启动出现403的问题;

查看日志

2022/05/26 22:49:28 [error] 14317#0: *1 "/home/admin/nginx1.20/html/index.html" is forbidden (13: Permission denied), client: 192.168.36.1, server: localhost, request: "GET / HTTP/1.1", host: "node02:90"
2022/05/26 22:49:28 [error] 14317#0: *1 open() "/home/admin/nginx1.20/html/favicon.ico" failed (13: Permission denied), client: 192.168.36.1, server: localhost, request: "GET /favicon.ico HTTP/1.1", host: "node02:90", referrer: "http://node02:90/"
^C

可以得值用户没权限修改启动用户和当前用户一样:修改nginx配置文件conf/nginx.conf,将user配置修改与启动用户一致。

编译完成后,就看进入nginx目录去配置nginx文件:

直接访问文件内容或者下载文件

 location /group1/M00 {
        root /export/fastdfs/storage/;
        ngx_fastdfs_module;
      }
 

 如上一个文件:

[root@node01 admin]#  fdfs_test /etc/fdfs/client.conf  upload 学生.xlsx

访问文件:

http://192.168.36.138/group1/M00/00/00/wKgkimKQUwmATNEQAAABvQAR3-8255_big.txt

 其他方式配置文件:

  location ~/group([1-9])/M0[0-9] {
            ngx_fastdfs_module;
        }

如果多个nginx设置请求

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

程序员路同学

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

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

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

打赏作者

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

抵扣说明:

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

余额充值