通過java操作Hadoop中zookeeper和HDFS的命令,同如Shell

通過java操作zookeeper的命令——

配置環境變量(之前在java中配置過的,因爲在cognos的時候要把java的環境變量刪除掉,所以現在要把java的環境變量恢復!配置環境變量.docx cognos刪除的環境配置.docx)。。。

首先要在新建的項目project裏導入相關的包右鍵>build path>user library>new...準本好後

建包-類-

★創建節點

zk.create("/zoo2", "myData2".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);

★刪除節點

 zk.delete("/zoo2", -1);

★修改節點

★查看操作是否成功

★查看節點狀態

System.out.println(" 節點狀態: [" + zk.exists("/zoo2", false) + "]");

 

注意:

很大的一個問題就是監視!

zookeeperDemo.java

通過java操作Hadoop中HDFS的命令——

通過java操作hadoop中HDFS的命令

複習一下平常的命令:]$ hadoop fs -ls

一定要配置環境變量:

 

僅此而已,不用再path中在配。。

java的工具eclipse中像上午那樣,將.jar導進去

  包括兩個,建兩個分別對應的放進去,完成。。

代碼部分:

1.導相關的包,直接複製的

 

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.OutputStream;

import java.net.URI;

 

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.fs.FSDataInputStream;

import org.apache.hadoop.fs.FileStatus;

import org.apache.hadoop.fs.FileSystem;

import org.apache.hadoop.fs.FsStatus;

import org.apache.hadoop.fs.Path;

 

2.正文:建立相關聯繫:

設置訪問的用戶和密碼

System.setProperty("HADOOP_USER_NAME", "Teacher");

System.setProperty("HADOOP_USER_PASSWORD", "******");

通常會遇到權限的問題,很多時候Student的用戶沒有權限,在Teacher下就可以走下去。。

Configuration conf=new Configuration();

FileSystem fs = FileSystem.newInstance(new URI("hdfs://192.168.20.2**:9000"),conf);

★讀取根目錄下的文件

Path hdfspath=new Path("/");

FileStatus[] listStatus = fs.listStatus(hdfspath);

for (FileStatus f : listStatus) {        System.out.println(f.getPath().getName()+"......."+f.getPath());

};

//對應在客戶端的hadoop下的查看步驟:hadoop]$hadoop fs -ls

//對應在web的hadoop下的查看步驟:ip:50070>Browse the file system>/根目錄下 GO

★創建文件夾

fs.mkdirs(new Path("/tmp2"));

★刪除文件夾

fs.delete(new Path("/tmp2"));

★將本地的文件上傳(複製copy)到HDFS分佈式文件系統上去

fs.copyFromLocalFile(new Path("F:\\lalaala.txt"), new Path("/tmp"));

★將HDFS分佈式文件系統上的文件下載(複製copy)到本地

fs.copyToLocalFile(new Path("/tmp/hive"), new Path("F:\\"));

注意:tmp的目錄下前面要有/

      hive和hive.txt是有區別的;

      上傳和下載的過程其實就是(從哪兒)copy(到哪兒)的過程;

      爲了每次跟直觀的看到操作結果是否成功,可寫一句打印;

System.out.println("....成功.....");

     web端的驗證更快,可直接在web輸入網址進行驗證;

     某盤下的是\\      ;

目錄下的目錄時//   ;

package com.hdhdfs;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.URI;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.FsStatus;
import org.apache.hadoop.fs.Path;

public class HDFSDemo {
	public static void main(String[] args) throws Exception {
		//1.設置訪問的用戶名和密碼
		
		System.setProperty("HADOOP_USER_NAME", "Teacher");
		System.setProperty("HADOOP_USER_PASSWORD", "**");
		Configuration conf=new Configuration();
		FileSystem fs = FileSystem.newInstance(new URI("hdfs://192.168.20.**:**00"),conf);
		//讀取根目錄下的文件
		Path hdfspath=new Path("/");
		FileStatus[] listStatus = fs.listStatus(hdfspath);
	     for (FileStatus f : listStatus) {
	    	  System.out.println(f.getPath().getName()+"......."+f.getPath());
	    	  //對應在客戶端的hadoop下的查看步驟:hadoop]$hadoop fs -ls
	    	  //對應在web的hadoop下的查看步驟:ip:50070>Browse the file system>/根目錄下 GO
	      	}
	      //創建文件夾
	      //fs.mkdirs(new Path("/tmp2"));
	      //刪除文件
	      //fs.delete(new Path("/tmp2"));
	      
	      //將本地的文件上傳到HDFS分佈式文件系統上去
	      //fs.copyFromLocalFile(new Path("F:\\lalaala.txt"), new Path("/tmp"));
		//將HDFS分佈式文件系統上的文件下載到本地
		  fs.copyToLocalFile(new Path("/tmp/hive"), new Path("F:\\"));
		  
	      System.out.println("....成功.....");
	      
	      
	      //
	      
		}
	}

注意:每執行一個命令時候將其他註釋掉,不要影響!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章