收藏 分享(赏)

2-HDFS作业及参考答案.docx

上传人:a****2 文档编号:3397629 上传时间:2024-04-28 格式:DOCX 页数:5 大小:525.71KB
下载 相关 举报
2-HDFS作业及参考答案.docx_第1页
第1页 / 共5页
2-HDFS作业及参考答案.docx_第2页
第2页 / 共5页
2-HDFS作业及参考答案.docx_第3页
第3页 / 共5页
2-HDFS作业及参考答案.docx_第4页
第4页 / 共5页
2-HDFS作业及参考答案.docx_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

1、题目一:编写一个Shell脚本,实现以下功能1:在HDFS在/目录下创建一个用户目录:itcast2:在HDFS用户目录itcast下创建日志目录: log3:在HDFS的log目录下创建三个主机目录: node1 node2 nod3创建完之后,效果如下:4:每隔一个小时(提醒: sleep 3600),分别对每台主机的/export/server/hadoop-2.7.5/logs目录下的.log文件进行压缩,压缩文件存放到每台主机的/export/data目录,压缩文件格式:log_2021_01_07_175636.tar.gz5:每隔1个小时(提醒: sleep 3600),分别将每

2、台主机的/export/data下的压缩后的日志文件上传对/itcast/log下的对应主机目录下,日志上传到HDFS之后,原来本地的日志压缩包要删除 效果如下:#!/bin/bash# 主机地址存放目录HOSTS=$HADOOP_HOME/etc/hadoop/slaves# HADOOP_BINHADOOP_BIN=$HADOOP_HOME/bin# 分别创建hdfs各主机文件对应备份目录for host in $(cat $HOSTS)do echo 创建集群/itcast/log/$host目录 hadoop fs -mkdir -p /itcast/log/$host echo 目录

3、创建完毕!done# 日志目录LOGDIR=/export/server/hadoop-2.7.5/logs#备份路径BACKUP=/export/data# 开启备份while truedo for host in $(cat $HOSTS) do echo 备份时间:北京时间$(date +%Y-%m-%d_%H:%M:%S) echo -开始备份$host日志数据- # 备份时间 BACKUPTIME=$(date +%Y_%m_%d_%H%M%S) # 备份文件名 BACKUPNAME=log_$BACKUPTIME.tar.gz echo 进入$LOGDIR目录 # 进入日志目录,备

4、份日志到目标文件夹 echo 将log相关文件备份至$BACKUP/$BACKUPNAME ssh root$host cd $LOGDIR;mkdir $BACKUPTIME;cp *.log $BACKUPTIME;tar -czvf $BACKUP/$BACKUPNAME ./$BACKUPTIME;rm -rf $BACKUPTIME; # 移动hadoop日志文件到hdfs集群 echo 移动文件至集群/itcast/log/$host ssh root$host $HADOOP_BIN/hadoop fs -moveFromLocal $BACKUP/$BACKUPNAME /it

5、cast/log/$host echo -$host日志备份结束- done sleep 3600done题目二:使用自己的话(面试)描述HDFS上传文件流程题目三:使用自己的话(面试)描述HDFS下载文件流程选做题(可以不做):题目四:使用HDFS的Java API 封装一个方法uploadDirToHDFS(String localDirPath, String hdfsPath),要求传入一个文件夹路径和HDFS路径,将该文件夹的下所有子文件夹和文件上传到指定的HDFS路径下。import org.apache.hadoop.conf.Configuration;import org.a

6、pache.hadoop.fs.FileStatus;import org.apache.hadoop.fs.FileSystem;import org.apache.hadoop.fs.Path;import java.io.File;import java.io.IOException;import .URI;import .URISyntaxException;public class LocalToHDFS public static void main(String args) throws IOException, URISyntaxException uploadDirToHDF

7、S(D:inputsort_input,/test); public static void uploadDirToHDFS(String localDirPath, String hdfsPath) throws IOException, URISyntaxException /获取hdfs文件系统对象 FileSystem fileSystem = FileSystem.get(new URI(hdfs:/node1:8020), new Configuration(); File dir = new File(localDirPath); listFiles(dir,fileSystem

8、,hdfsPath); /关闭 fileSystem.close(); private static void listFiles(File dir,FileSystem fileSystem,String hdfsPath) throws IOException /获取本地文件夹下面的文件和文件夹 File files = dir.listFiles(); if(files != null) /遍历文件对象 for (File file : files) /判断是否是文件 if(file.isFile() /拼接本地文件上传HDFS的路径 String parent = file.getPa

9、rent(); String fileDir = parent.substring(3); String fileDirPath = fileDir.replaceAll(, /); boolean flag = fileSystem.exists(new Path(hdfsPath+/+fileDirPath); if(!flag) /上传路径不存在则创建 fileSystem.mkdirs(new Path(hdfsPath+/+fileDirPath); /上传文件到HDFS指定路径 fileSystem.copyFromLocalFile(new Path(file.getPath(),new Path(hdfsPath+/+fileDirPath); else /文件目录递归 listFiles(file,fileSystem,hdfsPath);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教育教学 > 教案课件

copyright@ 2008-2023 wnwk.com网站版权所有

经营许可证编号:浙ICP备2024059924号-2