文件存储是阿里云今年新推出的存储服务,因为它提供标准的文件访问协议,用户无需对现有应用做任何修改,即可使用具备无限容量及性能扩展、单一命名空间、多共享、高可靠和高可用等特性的分布式文件系统。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 任务,这里的例子采用了最常见的 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
来源: https://yq.aliyun.com/articles/66175