1.shell 主要使用Hadoop命令+子命令
2.API JAVA API
1>创建工程,导入jar包
$hadoop_home/share/hadoop/common/*.jar
$hadoop_home/share/hadoop/common/lib/*.jar
$hadoop_home/share/hadoop/hdfs/*.jar
$hadoop_home/share/hadoop/hdfs/lib/*.jar
2>获取configuration对象,获取一个链接connection
3>获取FileSystem对象
通过uri指定协议URIuri =new URI("hdfs://主机名:9000/");
前提是要让windows系统认识node这个主机名。修改Windows的hosts文件
路径是C:\Windows\System32\drivers\etc\hosts
通过该对象的方法对HDFS进行操作。
下面以上传文件的代码为例说明(注解Before,After,Test用于junit单元测试):
@Before public void init(){ //hadoop有好几个配置文件,存储配置文件解析的结果 Configuration configuration=new Configuration(); try { //在创建uri的时候要指定协议名称,filesystem支持很多种文件系统,要通过协议名称来指定操作的是哪种文件系统 //可以操作本地文件系统,hdfs,ftp等 URI uri =new URI("hdfs://oracle:9000/"); //默认获取的是localfilesystem,这个对象默认获取的是本地文件系统中的文件 //FileSystem可以访问多种文件系统,多态 fileSystem = FileSystem.get(uri, configuration); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } @After public void close(){ if(fileSystem!=null){ try { fileSystem.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } //上传 @Test public void putTest(){ try { fileSystem.copyFromLocalFile(new Path("d:/test.txt"), new Path("/")); } catch (IllegalArgumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }