CubeFS 十分钟入门丨轻松构建大数据存储

大数据
后台-插件-广告管理-内容页头部广告(手机)

01背景

CubeFS ( https://cubefs.io/ )兼容 Hadoop FileSystem 接口协议,用户可以基于 CubeFS 构建存算分离的大数据存储集群,来替换 Hadoop 文件系统 ( HDFS ),其架构如下:

 
  • 数据存储层:CubeFS 支持多副本及纠删码两种引擎,用户可以根据业务场景灵活选择(均支持 EB 级规模)。
  • 接口层:CubeFS 提供兼容 hdfs 协议接口及原生 hdfs 协议接口(目前原生 hdfs 协议接口已经研发完成,内部测试中)。
  • 计算层:可兼容常用的大数据计算引擎,如 spark、Flink、hive、presto、hive MR 等。

本文主要介绍使用 CubeFS 提供的兼容 hdfs 协议接口对接 Hadoop 组件。

02资源准备

2.1 CubeFS 环境

可参看前文:单机搭建CubeFS集群

2.2 编译资源包

编译环境版本要求CentOS7Java1.8及以上Go1.16及以上Maven3.8.5及以上

准备以下依赖包:libcfs.so、cubefs-hadoop-0.1.0.jar、jna-5.4.0.jar

编译 libcfs.so

git clone https://github.com/cubefs/cubefs.git cd cubefs/libsdk sh build.sh

编译后会在 libsdk 生成 libcfs.so 动态库

编译 CubeFS Hadoop 客户端插件

git clone https://github.com/cubefs/cubefs-hadoop.git  cd cubefs-hadoop/  mvn package -Dmaven.test.skip=true 

编译完成后会在 target 目录生成 cubefs-hadoop-0.1.0.jar 包

准备 jna.jar 依赖包

wget https://repo1.maven.org/maven2/net/java/dev/jna/jna/5.4.0/jna-5.4.0.jar  

2.3 创建卷

通过 curl 或者 cli 命令创建测试卷

curl -v "http://masterip:17010/admin/createVol?name=test&capacity=100&owner=cfs" #或者./cfs-cli volume create test cfs --capacity 100

具体参考:创建卷 (地址:https://cubefs.io/zh/docs/master/user-guide/volume.html )

03部署

3.1 Hadoop 部署

以单机部署为例:

下载 Hadoop

wget https://downloads.apache.org/hadoop/common/hadoop-2.10.2/hadoop-2.10.2. tar.gz  tar -zxvf hadoop-2.10.2.tar.gz  mv hadoop-2.10.2 /usr/local/share/

配置环境变量

vim /etc/profile  export HADOOP_HOME=/usr/local/share/hadoop-2.10.2  export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin  source /etc/profile

最后执行 hadoop version,能正确返回如下信息:

[root@node1 ~]# hadoop version Hadoop 2.10.2 Subversion Unknown -r 965fd380006fa78b2315668fbc7eb432e1d8200f Compiled by ubuntu on 2022-05-24T22:35Z Compiled with protoc 2.5.0 From source with checksum d3ab737f7788f05d467784f0a86573fe This command was run using /usr/local/share/hadoop-2.10.2/share/hadoop/common/hadoop-common-2.10.2.jar3.2

3.2 CubeFS Hadoop 插件部署

安装资源包

cp cubefs-hadoop-0.1.0.jar $HADOOP_HOME/share/hadoop/common/libcp jna-5.4.0.jar $HADOOP_HOME/share/hadoop/common/lib# 拷贝libcfs.so到 $HADOOP_HOME/lib/nativecp libcfs.so $HADOOP_HOME/lib/native

修改配置

修改 core-site.xml(或者 hdfs-site.xml )添加以下内容:

<configuration>     <property>     <name>fs.cfs.impl</name>     <value>io.cubefs.CubefsFileSystem</value>     </property>     <property>     <name>cfs.master.address</name>     <value>ip1:17010,ip2:17010,ip3:17010</value>     </property>     <property>     <name>cfs.log.dir</name>        <value>/tmp/cfs-access.log</value>     </property>     <property>     <name>cfs.log.level</name>      <value>INFO</value>     </property>     <property>         <name>cfs.access.key</name>         <value>cTDDVyiQwEfxlyGK</value>     </property>     <property>         <name>cfs.secret.key</name>         <value>b78vn8WaK8bh4Uge5Lsy6C6LNPPsxDK5</value>     </property>     <property>     <name>cfs.min.buffersize</name>     <value>67108864</value>     </property> </configuration> 

配置参数说明:

Property

Value

Notes

fs.cfs.impl

io.cubefs.CubefsFileSystem

指定 scheme为cfs:// 的存储实现类

cfs.master.address

CubeFS master 地址,可以是 ip+port 格式,ip:port,ip:port,ip:port,也可以是域名

cfs.log.dir

/tmp/cfs-access-log

日志路径

cfs.log.level

INFO

日志级别

cfs.access.key

CubeFS 文件系统的所属用户的 accessKey

cfs.secret.key

CubeFS 文件系统的所属用户的 secretKey

cfs.min.buffersize

8MB

写缓存区大小,对于副本卷按默认值就行,EC 卷建议64MB

cfs.min.read.buffersize

128KB

读缓冲区大小,对于副本卷按默认值就行,EC 卷建议4MB

04WordCount 验证

准备一个单词文件,上传至 CubeFS

cat myword.txt  cubefs hdfs hdfs ceph ceph cubefs cephfs cubefs hdfs ceph hadoop fs -put myword.txt cfs://test/

执行 WorkCount

hadoop jar /usr/local/share/hadoop-2.10.2/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.10.2.jar wordcount cfs://test/myword.txt cfs://test/output

执行完成后,可在 cfs://test/ouput 查看结果

hadoop fs -cat cfs://test/output/part-r-00000  ceph   3  cephfs 1  cubefs 3  hdfs   3 

以上是最简单的 Hadoop 接入教程,对于其他组件请参考官方文档:https://cubefs.io/zh/docs/master/user-guide/hadoop.html

后台-插件-广告管理-内容页尾部广告(手机)
标签:

评论留言

我要留言

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。