通過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) + "]");
注意:
很大的一個問題就是監視!
通過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("....成功....."); // } }
注意:每執行一個命令時候將其他註釋掉,不要影響!