简介
文件存储是阿里云今年新推出的存储服务,因为它提供标准的文件访问协议,用户无需对现有应用做任何修改,即可使用具备无限容量及性能扩展、单一命名空间、多共享、高可靠和高可用等特性的分布式文件系统。E-MapReduce服务是阿里云上的开源大数据解决方案,可以帮用户构建基于Hadoop等开源组件的大数据平台。
今天我给大家介绍一个使用场景,可以将E-MapReduce的Hadoop作业和文件存储(NAS)结合在一起,发挥分布式存储和分布式计算在一起的威力。
环境准备
第一步:按照官方文档在文件存储的管理控制台依次创建文件系统、创建挂载点、配置权限组规则。值得注意的是,如果使用经典网络环境,挂载点不提供默认权限组,且经典网络类型权限组规则授权地址只能是单个 IP 而不能是网段,所以你需要在控制台里手动添加规则。所以需要确保E-MapReduce集群里所有的节点都设置了对NAS的访问权限(读写)。
第二步:通过SSH登录E-MapReduce节点,挂载NAS。注意:master节点和worker节点都需要挂载:
sudo mkdir /mnt/nas
sudo mount -t nfs4 <nas-url>.cn-hangzhou.nas.aliyuncs.com:/ /mnt/nas
第三步:测试挂载是否生效,比如可以在Master节点上创建目录:
mkdir /mnt/nas/wc-in
并在worker节点上创建文件
touch /mnt/nas/wc-in/1.txt
确保所有节点上都能看到文件,这样NAS配置就算成功了
[hadoop@emr-header-1 ~]$ ls -l /mnt/nas/wc-in
total 8
-rw-rw-r-- 1 hadoop hadoop 27 12月 12 10:32 1.txt
-rw-rw-r-- 1 hadoop hadoop 28 12月 12 10:32 2.txt
运行Hadoop MapReduce任务
环境准备好之后,我们就可以运行Hadoop任务,这里的例子采用了最常见的WordCount:
hadoop jar /opt/apps/hadoop-2.7.2/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount file:///mnt/nas/wc-in file:///mnt/nas/wc-out
因为NAS就是挂载在本地的文件系统,所以可以采用Hadoop自带的处理组件,我们只需要在输入和输出目录(或文件)前面加上 file:/// 前缀,MapReduce任务就会自动定位到NAS上,处理NAS上的数据,并把结果写到NAS上。
查看结果
[hadoop@emr-worker-2 wc-out]$ cat /mnt/nas/wc-out/part-*
world 2
aliyun 2
alibaba 1
hadoop 1
hello 1
tencent 1