在上次Hadoop的介绍中,介绍了JDK的安装,在安装eclipse之前需要安装JDK,若未配置JDK中,可用参考如下链接
大数据底层生态之Hadoop
首先,去官网下载Eclipse安装包eclipse-inst-win64:https://www.eclipse.org/downloads/
运行安装包,选择Eclipse IDE for Java Developers,
开始安装,过程可能较慢。
等待一段时间后即可完成Eclipse的安装
进入Maven官网
http://maven.apache.org/download.cgi
选择最近的镜像,选择Maven压缩包apache-maven-3.6.0-bin.tar.gz开始下载
解压Maven压缩包apache-maven-3.6.0-bin.tar.gz,解压后的文件夹\apache-maven-3.6.0,将其考入自定义路径,如D:\eclipse\apache-maven-3.6.0
配置Maven的环境变量,Path添加Maven的\bin的安装路径,cmd命令行运行mvn -v,查看是否成功安装配置
配置Maven的installation和User Settings
【Preferences】→【Maven】→【Installations】配置Maven安装路径,【User Settings】配置settings.xml的路径
文件下载Java程序代码:
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
public class HDFSDownload {
private static InputStream input;
private static OutputStream output;
public static void main(String[] args) throws IOException {
//设置root权限
System.setProperty("HADOOP_USER_NAME", "root");
//创建HDFS连接对象client
Configuration conf = new Configuration();
conf.set("fs.defaultFS", "hdfs://izwz97mvztltnke7bj93idz:9000");
FileSystem client=FileSystem.get(conf);
output = new FileOutputStream("c:\\hdfs\\bbout.txt");
//创建HDFS的输入流
input=client.open((new Path("/bb.txt")));
byte[] buffer= new byte[1024];
int len=0;
while ((len=input.read(buffer))!=-1) {
output.write(buffer, 0, len);
}
output.flush();
input.close();
output.close();
}
}
文件上传Java程序代码:
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
public class HDFSUpload {
private static InputStream input;
private static OutputStream output;
public static void main(String[] args) throws IOException {
//设置root权限
System.setProperty("HADOOP_USER_NAME", "root");
//创建HDFS连接对象client
Configuration conf = new Configuration();
conf.set("fs.defaultFS", "hdfs://izwz97mvztltnke7bj93idz:9000");
conf.set("dfs.client.use.datanode.hostname", "true");
FileSystem client = FileSystem.get(conf);
/*//要上传的资源路径
String src = "C:/Users/Desktop/bcdf.txt";
//要上传的hdfs路径
String hdfsDst = "/aadir";
client.copyFromLocalFile(new Path(src), new Path(hdfsDst));
System.out.println("Success");*/
//创建HDFS的输入流
input = new FileInputStream("D:\\xx编程\\bcdf.txt");
//创建HDFS的输出流
output = client.create(new Path("/aadir/about.txt"));
//写文件到HDFS
byte[] buffer = new byte[1024];
int len=0;
while ((len=input.read(buffer))!=-1) {
output.write(buffer, 0, len);
}
//防止输出数据不完整
output.flush();
//使用工具类IOUtils上传或下载
input.close();
output.close();
}
}
文件创建程序代码
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
public class HDFSMKdir {
public static void main(String[] args) throws IOException {
//设置root权限
System.setProperty("HADOOP_USER_NAME", "root");
//创建HDFS连接对象client
Configuration conf = new Configuration();
conf.set("fs.defaultFS","hdfs://izwz97mvztltnke7bj93idz:9000");
FileSystem client = FileSystem.get(conf);
client.mkdirs(new Path("/aadir"));
client.close();
System.out.println("successfully!");
}
}
文件是否存在程序代码:
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
public class HDFSFilelfExist {
public static void main(String[] args) throws IOException {
//设置root权限
System.setProperty("HADOOP_USER_NAME", "root");
//创建HDFS连接对象client
Configuration conf = new Configuration();
conf.set("fs.defaultFS", "hdfs://izwz97mvztltnke7bj93idz:9000");
FileSystem client = FileSystem.get(conf);
//声明对象文件
String fileName="/bb.txt";
if (client.exists(new Path(fileName))) {
System.out.println("文件存在");
}else {
System.out.println("文件不存在");
}
}
}
通过以下命令可用查看到Hadoop的结果:
hdfs dfs -ls / 查看hdfs根目录下文件和目录
hdfs dfs -ls -R / 查看hdfs根目录下包括子目录在内的所有文件和目录
hdfs dfs -mkdir /aa/bb 在hdfs的/aa目录下新建/bb目录
hdfs dfs -rm -r /aa/bb 删除hdfs的/aa目录下的/bb目录
hdfs dfs -rm /aa/out.txt 删除hdfs的/aa目录下的out.txt文件
通过hdfs命令也可将文件上传
hdfs dfs -put /root/mk.txt /aa 把本地文件上传到hdfs
hdfs dfs -copyFromLocal a.txt / 把本地文件上传到hdfs
hdfs dfs -get /bb.txt bbcopy.txt 从hdfs下载文件到本地
hdfs dfs -copyToLocal /bb.txt bbcopy.txt 从hdfs下载文件到本地