注意
功能说明
Hadoop cosn 插件实现了以腾讯云 COS 作为底层存储文件系统运行上层计算任务的功能,使用 Hadoop 大数据处理引擎,如 MapReduce,Hive、Spark、Tez 等,可以处理存储在腾讯云对象存储 COS 上的数据。
使用限制
只适用于 COS V4 版本
使用环境
系统环境
Linux 或 Windows 系统
软件依赖
Hadoop-2.7.2 及以上版本
安装及配置
使用方法
安装 Maven
Linux :
sudo apt-get install maven
Windows:
下载链接:Maven
安装与配置请参见 Windows 环境下 Maven 安装与环境变量配置
获取 cos-java-sdk
下载地址:cos-java-sdk
进入存放路径,运行以下命令进行编译,获取 target 目录下的 cos_api-4.2.jar:
mvn clean package -Dmaven.test.skip=true
获取 hadoop-cos 插件
下载地址:hadoop-cos 插件
因为 cosn 依赖 SDK,请将上一步编译的 cos_api-4.2.jar 拷贝到
src/main/resources
下,然后运行以下命令进行编译,获取 target 目录下的 hadoop-cos-2.7.2.jar:mvn clean package -Dmaven.test.skip=true
插件安装方法
修改 hadoop_env.sh
在
$HADOOP_HOME/etc/hadoop
目录下,进入 hadoop_env.sh,增加如下内容,将 cosn 相关 jar 包加入 Hadoop 环境变量:for f in $HADOOP_HOME/share/hadoop/tools/lib/*.jar; doif [ "$HADOOP_CLASSPATH" ]; thenexport HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$felseexport HADOOP_CLASSPATH=$ffidone
将获取的 cos_api-4.2.jar 和 hadoop-cos-2.7.2.jar 拷贝到
$HADOOP_HOME/share/hadoop/tools/lib
下,同时将本地 Maven 仓库下的 /org/json/json/20140107
目录下的 json-20140107.jar 和 /org/apache/httpcomponents/httpmime/4.2.5
目录下的 httpmime-4.2.5.jar 拷贝到该目录。
一般本地 Maven 仓库的位置默认在 ${user.home}/.m2/repository
目录下,由 Maven 的配置文件 ${MAVEN_HOME}/conf/settings.xml 里的 localRepository 变量控制。修改配置文件使用插件
修改 $HADOOP_HOME/etc/hadoop/core-site.xml,增加 COS 相关用户和实现类信息,例如:
<configuration><property><name>hadoop.tmp.dir</name><value>/data/rabbitliu/work/hadoop/hadoop_test</value></property><property><name>fs.defaultFS</name><value>hdfs://localhost:9000</value></property><property><name>dfs.name.dir</name><value>/data/rabbitliu/work/hadoop/hadoop_test/name</value></property><property><name>fs.cos.userinfo.appid</name><value>1252448703</value></property><property><name>fs.cos.userinfo.secretId</name><value>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</value></property><property><name>fs.cos.userinfo.secretKey</name><value>xxxxxxxxxxxxxxxxxxxxxxxx</value></property><property><name>fs.cosn.impl</name><value>org.apache.hadoop.fs.cosnative.NativeCosFileSystem</value></property><property><name>fs.cos.buffer.dir</name><value>/data/rabbitliu/work/hadoop/hadoop_test/cos_buf</value></property><property><name>fs.cos.userinfo.region</name><value>tj</value></property></configuration>
注意
配置文件中含有 COS 的几个属性:
fs.cos.userinfo.appid 属性: 填写您使用的 腾讯云账户的 APPID。可通过 控制台-账号信息 查看。
fs.cos.userinfo.secretId/secretKey 属性:填写您账户的API 密钥信息。可通过 云 API 密钥 控制台 查看。
fs.cosn.impl 为 cosn 的实现类,固定为 org.apache.hadoop.fs.cosnative.NativeCosFileSystem。
fs.cos.buffer.dir 请设置一个实际存在的目录,运行过程中产生的临时文件会暂时放于此处。
fs.cos.userinfo.region 请填写您的地域信息,枚举值为 历史版本地域列表 中的地域简称,如 sh, gz, sgp 等。
使用软件(以 Linux 为例)
使用 hadoop fs 常用命令
命令格式为:
hadoop fs- -ls cosn://Bucket 路径
,下例中以名称为 example 的 Bucket 为例,可在其后面加上具体路径。hadoop fs -ls cosn://example/Found 7 items-rw-rw-rw- 1 example example 3669 2016-10-25 21:23 cosn://example/b.txtdrwxrwxrwx - example example 0 1970-01-01 08:00 cosn://example/dir1drwxrwxrwx - example example 0 1970-01-01 08:00 cosn://example/mr-rw-rw-rw- 1 example example 16952 2016-10-25 21:37 cosn://example/qcloud_sign.proto-rw-rw-rw- 1 example example 2048 2016-10-25 21:48 cosn://example/test2K.txt-rw-rw-rw- 1 example example 52428800 2016-10-27 16:40 cosn://example/test50MB.txtdrwxrwxrwx - example example 0 1970-01-01 08:00 cosn://example/xx1
运行 MapReduce 自带的 wordcount
注意
以下命令中 hadoop-mapreduce-examples-2.7.2.jar 是以 2.7.2 版本为例,如版本不同,请修改成对应的版本号。
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount cosn://example/mr/input cosn://example/mr/output3
执行成功会返回统计信息,示例如下:
File System CountersCOSN: Number of bytes read=72COSN: Number of bytes written=40COSN: Number of read operations=0COSN: Number of large read operations=0COSN: Number of write operations=0FILE: Number of bytes read=547350FILE: Number of bytes written=1155616FILE: Number of read operations=0FILE: Number of large read operations=0FILE: Number of write operations=0HDFS: Number of bytes read=0HDFS: Number of bytes written=0HDFS: Number of read operations=0HDFS: Number of large read operations=0HDFS: Number of write operations=0Map-Reduce FrameworkMap input records=5Map output records=7Map output bytes=59Map output materialized bytes=70Input split bytes=99Combine input records=7Combine output records=6Reduce input groups=6Reduce shuffle bytes=70Reduce input records=6Reduce output records=6Spilled Records=12Shuffled Maps =1Failed Shuffles=0Merged Map outputs=1GC time elapsed (ms)=0Total committed heap usage (bytes)=653262848Shuffle ErrorsBAD_ID=0CONNECTION=0IO_ERROR=0WRONG_LENGTH=0WRONG_MAP=0WRONG_REDUCE=0File Input Format CountersBytes Read=36File Output Format CountersBytes Written=40