与 山河云对象存储集成
山河云对象存储为用户提供可无限扩展的通用数据存储服务,具有安全可靠、简单易用、高性能、低成本等特点。用户可将数据上传至 山河云对象存储中,以供数据分析。
由于 山河云对象存储兼容 AWS S3 API,因此 HDFS 可以通过 AWS S3 API 与 山河云对象存储高效集成,以满足更多的大数据计算和存储场景。
有关 QingStor 的更多内容,请参考 山河云对象存储用户指南。
本小节以 test1 表为例,介绍如何使用 Phoenix 映射HBase 中已有的表。
操作步骤
-
在 HBase 客户端节点的
/root/.bashrc
文件最后,增加配置。可通过
Web 终端
或连接 VPN
登录 HBase 客户端,用户名为ubuntu
,密码为hbase
,通过sudo su
可以切换到root
用户。-
HBase 1.2.6 - v1.1.0 版本,增加如下配置:
export HADOOP_S3=/opt/hadoop/share/hadoop/tools/lib/hadoop-aws-2.7.3.jar,/opt/hadoop/share/hadoop/tools/lib/aws-java-sdk-1.7.4.jar,/opt/hadoop/share/hadoop/tools/lib/jackson-annotations-2.2.3.jar,/opt/hadoop/share/hadoop/tools/lib/jackson-core-2.2.3.jar,/opt/hadoop/share/hadoop/tools/lib/jackson-core-asl-1.9.13.jar,/opt/hadoop/share/hadoop/tools/lib/jackson-databind-2.2.3.jar,/opt/hadoop/share/hadoop/tools/lib/jackson-jaxrs-1.9.13.jar,/opt/hadoop/share/hadoop/tools/lib/jackson-mapper-asl-1.9.13.jar,/opt/hadoop/share/hadoop/tools/lib/jackson-xc-1.9.13.jar
-
HBase 2.0.6 - v2.0.1 版本,增加如下配置:
export HADOOP_S3=/opt/hadoop/share/hadoop/tools/lib/hadoop-aws-2.7.7.jar,/opt/hadoop/share/hadoop/tools/lib/aws-java-sdk-1.7.4.jar,/opt/hadoop/share/hadoop/tools/lib/jackson-annotations-2.2.3.jar,/opt/hadoop/share/hadoop/tools/lib/jackson-core-2.2.3.jar,/opt/hadoop/share/hadoop/tools/lib/jackson-core-asl-1.9.13.jar,/opt/hadoop/share/hadoop/tools/lib/jackson-databind-2.2.3.jar,/opt/hadoop/share/hadoop/tools/lib/jackson-jaxrs-1.9.13.jar,/opt/hadoop/share/hadoop/tools/lib/jackson-mapper-asl-1.9.13.jar,/opt/hadoop/share/hadoop/tools/lib/jackson-xc-1.9.13.jar
-
HBase 2.4.4 - v3.0.0 版本,增加如下配置:
export HADOOP_S3=/opt/hadoop/share/hadoop/tools/lib/aws-java-sdk-bundle-1.11.375.jar,/opt/hadoop/share/hadoop/tools/lib/hadoop-aws-3.2.1.jar export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$(echo $HADOOP_S3 |sed 's/,/:/g')
-
-
执行以下命令,重启配置文件。
source /root/.bashrc
-
在 HBase 客户端节点的
/opt/hadoop/etc/hadoop/core-site.xml
文件的<configuration>
和</configuration>
之间增加以下配置。<property> <name>fs.s3a.endpoint</name> <value>s3.${zone}.qingstor.com</value> </property> <property> <name>fs.s3a.access.key</name> <value>${access_key}</value> </property> <property> <name>fs.s3a.secret.key</name> <value>${secret_key}</value> </property> <property> <name>fs.s3a.connection.ssl.enabled</name> <value>false</value> </property> <property> <name>fs.s3a.paging.maximum</name> <value>1000</value> </property> <property> <name>fs.s3a.connection.timeout</name> <value>300000</value> </property> <property> <name>ipc.client.connect.timeout</name> <value>200000</value> </property> <property> <name>ipc.client.connect.max.retries.on.timeouts</name> <value>3</value> </property>
参数 描述 zone
山河云对象存储可用区,目前开放了 jn1a,jn2a 区。
access_key
API 密钥 ID,即 API 密钥公钥。
secret_key
API 密钥私钥。
-
若 HBase 版本低于 2.4.4-v3.0.0,则需在 HBase 客户端节点的
/opt/hadoop/etc/hadoop/hadoop-env.sh
文件中替换目标信息,内容如下。替换前:
export HADOOP_CLASSPATH=/usr/local/hadoop/share/hadoop/common/hadoop-lzo-0.4.20-SNAPSHOT.jar:$HADOOP_CLASSPATH
替换后:
source /root/.bashrc export HADOOP_CLASSPATH=/usr/local/hadoop/share/hadoop/common/hadoop-lzo-0.4.20-SNAPSHOT.jar:$HADOOP_CLASSPATH:$(echo $HADOOP_S3 |sed 's/,/:/g')
上传下载
完成以上述操作后,可进行本地文件、HDFS 文件与 山河云对象存储之间到上传和下载。
-
本地文件和对象存储之间的上传下载
cd /opt/hadoop # 从 HBase 客户端本地上传文件到 山河云对象存储 bin/hdfs dfs -mkdir s3a://{{bucket_name}}/${dir} bin/hdfs dfs -put LICENSE.txt s3a://{{bucket_name}}/${dir}/ # 将文件从 山河云对象存储下载到 Client 主机本地 bin/hdfs dfs -get s3a://{{bucket_name}}/${dir}/LICENSE.txt
-
HDFS文件系统和对象存储之间的数据传输
cd /opt/hadoop # 将文件从 山河云对象存储拷贝到 HDFS 文件系统 bin/hadoop distcp -libjars $HADOOP_S3 s3a://{{bucket_name}}/${dir}/LICENSE.txt /LICENSE.txt # 将文件从 HDFS 文件系统拷贝到 山河云对象存储存储空间中 bin/hadoop distcp -libjars $HADOOP_S3 /LICENSE.txt s3a://{{bucket_name}}/${dir}/