配置和使用
更新时间:2022-07-04
您只需下载相应的SDK包,修改部分配置即可使用BOS HDFS工具。
下载
- 下载 BOS FS JAR,将解压后的jar包复制到
$hadoop_dir/share/hadoop/common
中。其中MD5 = afc2738e0dabcda9d5d025ef9845062e
。 - 下载 依赖的jar包,将解压后的jar包复制到
$hadoop_dir/share/hadoop/common/lib/
中,其中Java SDK的版本必须为V0.10.82或以后版本,httpclient和httpcore包需要替换原lib目录下的旧包,防止冲突,其他jar包直接放在lib目录下即可。
使用前准备
- 在Hadoop配置路径中修改
log4j.properties
,调整BOS SDK的日志配置:log4j.logger.com.baidubce.http=WARN
- 在
$hadoop_dir/etc/core-site.xml
文件中添加或者修改BOS HDFS相关配置。
<property>
<name>fs.bos.access.key</name>
<value>{Your AK}</value>
</property>
<property>
<name>fs.bos.secret.access.key</name>
<value>{Your SK}</value>
</property>
<property>
<name>fs.bos.endpoint</name>
<value>http://bj.bcebos.com</value>
</property>
<property>
<name>fs.bos.impl</name>
<value>org.apache.hadoop.fs.bos.BaiduBosFileSystem</value>
</property>
<property>
<name>fs.bos.multipart.uploads.attempts</name>
<value>5</value>
</property>
<property>
<name>fs.bos.multipart.uploads.block.size</name>
<value>9437184</value>
</property>
<property>
<name>fs.bos.multipart.uploads.concurrent.size</name>
<value>3</value>
</property>
<property>
<name>fs.bos.multipart.uploads.factor</name>
<value>10.0</value>
</property>
<property>
<name>fs.bos.multipart.uploads.speed</name>
<value>10485760</value>
</property>
开始使用
使用BOS HDFS访问BOS服务时路径需要以bos://
开始。如:
$ hdfs dfs -ls bos://{bucket}/
$ hdfs dfs -put ${local_file} bos://{bucket}/a/b/c
或者,在$hadoop_dir/etc/core-site.xml
下配置默认文件目录
<property>
<name>fs.defaultFS</name>
<value>bos://{bucket}</value>
</property>
注意,在配置fs.defaultFS为BosFileSystem后,如果启动NameNode和DataNode可能会触发scheme检查失败。
建议在仅使用BosFileSystem时配置fs.defaultFS,且无需启动NameNode和DataNode;否则配置HDFS默认地址。
就像使用原生hdfs那样:
$ hdfs dfs -ls /
一次wordcount的实践
1. 创建数据目录
用于保存MapReduce任务的输入文件
$ hdfs dfs -mkdir -p bos://test-979/data/wordcount
用于保存MapReduce任务的输出文件
$ hdfs dfs -mkdir bos://test-979/output
查看这两个新创建的目录
$ hdfs dfs -ls bos://test-979/
Found 2 items
drwxrwxrwx - 0 1970-01-01 08:00 bos://test-979/data
drwxrwxrwx - 0 1970-01-01 08:00 bos://test-979/output
如果想要显示文件夹的准确创建时间,可以在$hadoop_dir/etc/core-site.xml
下配置
<property>
<name>fs.bos.object.dir.showtime</name>
<value>true</value>
</property>
2. 写一个单词文件,并上传到hdfs
单词文件的内容
$ cat words.txt
hello baidu
hello bos
hadoop hdfs
hello hadoop
bos hdfs
上传words.txt到hdfs
$ hdfs dfs -put words.txt bos://test-979/data/wordcount
在hdfs中查看刚刚上传的文件
$ hdfs dfs -cat bos://test-979/data/wordcount/words.txt
hello baidu
hello bos
hadoop hdfs
hello hadoop
bos hdfs
3. 运行wordcount程序
hadoop自带的wordcount程序在$hadoop_dir/share/hadoop/mapreduce/
下
$ hadoop jar hadoop-mapreduce-examples-2.7.7.jar wordcount bos://test-979/data/wordcount bos://test-979/output/wordcount
4. 查看统计结果
$ hdfs dfs -ls bos://test-979/output/wordcount/
-rw-rw-rw- 1 0 2020-06-12 16:55 bos://test-979/output/wordcount/_SUCCESS
-rw-rw-rw- 1 61 2020-06-12 16:55 bos://test-979/output/wordcount/part-r-00000
$ hdfs dfs -cat bos://test-979/output/wordcount/part-r-00000
baidu 1
bos 2
hadoop 2
hdfs 2
hello 3
使用进阶
由于自建Hadoop集群的可拓展性有限,且需要大量人力对集群进行运维,如果您对性能及安全性有更高要求,推荐使用百度智能云提供的 百度 MapReduce(BMR)。BMR 是全托管的 Hadoop/Spark 集群,您可以按需部署并弹性扩展集群,只需专注于大数据处理、分析、报告,拥有多年大规模分布式计算技术积累的百度运维团队全权负责集群运维,能够在性能,安全性和便捷性上有大幅提升。