⑴ java api怎麼連接偽分布hadoop
在學校java編程的過程中,Eclipse是個可以很好的幫助我們編程的工具,API文檔又是我們學習java的一個很好的工具,將兩者結合起來,便可以很好的幫助我們學習編程了。 工具/原料 Eclipse javaAPI文檔 方法/步驟 打開Eclipse,點擊Windows選項。 在Windows選項卡下,點擊最下面的「 perferences」選項。 在perferences對話框,點擊「java」前的小三角。 在java選項下,選擇「inselled jres」,雙擊。 點擊右側的「jre8」,點擊「edit」。 在「EDIT JRE」對話框中,找到名字最後為「rt.jar」的文件。展開。 點擊「java doc location」。 在java doc對話框中,點擊「browse」,選擇路徑,路徑為java API文件路徑。最後確定即可。 在我們編寫程序的時候,滑鼠游標落到一個代碼上,就可以便捷查看它的說明了。
⑵ 利用JAVA+API向HDFS文件系統上的文件寫入數據一共有哪三種方法,請敘述該三種
摘要
一.構建環境
⑶ eclipse(java api)操作hadoop hdfs,我試圖將本地文件拷貝進hdfs,目標卻是本地文件系統,不是hdfs。
恭喜啊,學習hadoop需要先學好命令啊。
想學linux命令就去www.linuxsky.cn,裡面也可以學習腳本和svn的命令,哈哈
⑷ 如何使用Java API讀寫HDFS
HDFS是Hadoop生態系統的根基,也是Hadoop生態系統中的重要一員,大部分時候,我們都會使用Linux shell命令來管理HDFS,包括一些文件的創建,刪除,修改,上傳等等,因為使用shell命令操作HDFS的方式,相對比較簡單,方便,但是有時候,我們也需要通過編程的方式來實現對文件系統的管理。
比如有如下的一個小需求,要求我們實現讀取HDFS某個文件夾下所有日誌,經過加工處理後在寫入到HDFS上,或者存進Hbase里,或者存進其他一些存儲系統。這時候使用shell的方式就有點麻煩了,所以這時候我們就可以使用編程的方式來完成這件事了,當然散仙在這里使用的是原生的Java語言的方式,其他的一些語言例如C++,PHP,Python都可以實現,散仙在這里不給出演示了,(其實散仙也不會那些語言,除了剛入門的Python) 。
下面,散仙給出代碼,以供參考:
view sourceprint?
package com.java.api.hdfs;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
/**
* @author 三劫散仙
* Java API操作HDFS
* 工具類
*
* **/
public class OperaHDFS {
public static void main(String[] args)throws Exception {
//System.out.println("aaa");
// uploadFile();
//createFileOnHDFS();
//deleteFileOnHDFS();
//createDirectoryOnHDFS();
//deleteDirectoryOnHDFS();
// renameFileOrDirectoryOnHDFS();
readHDFSListAll();
}
/***
* 載入配置文件
* **/
static Configuration conf=new Configuration();
/**
* 重名名一個文件夾或者文件
public static void renameFileOrDirectoryOnHDFS()throws Exception{
FileSystem fs=FileSystem.get(conf);
Path p1 =new Path("hdfs://10.2.143.5:9090/root/myfile/my.txt");
fs.rename(p1, p2);
System.out.println("重命名文件夾或文件成功.....");
}
/***
*
* 讀取HDFS某個文件夾的所有
* 文件,並列印
*
* **/
public static void readHDFSListAll() throws Exception{
//流讀入和寫入
InputStream in=null;
//獲取HDFS的conf
//讀取HDFS上的文件系統
FileSystem hdfs=FileSystem.get(conf);
//使用緩沖流,進行按行讀取的功能
BufferedReader buff=null;
//獲取日誌文件的根目錄
Path listf =new Path("hdfs://10.2.143.5:9090/root/myfile/");
//獲取根目錄下的所有2級子文件目錄
FileStatus stats[]=hdfs.listStatus(listf);
//自定義j,方便查看插入信息
int j=0;
for(int i = 0; i < stats.length; i++){
//獲取子目錄下的文件路徑
FileStatus temp[]=hdfs.listStatus(new Path(stats[i].getPath().toString()));
for(int k = 0; k < temp.length;k++){
System.out.println("文件路徑名:"+temp[k].getPath().toString());
//獲取Path
Path p=new Path(temp[k].getPath().toString());
//打開文件流 in=hdfs.open(p);
//BufferedReader包裝一個流
buff=new BufferedReader(new InputStreamReader(in));
String str=null;
while((str=buff.readLine())!=null){
System.out.println(str);
}
buff.close();
in.close();
}
}
hdfs.close();
}
/**
* 從HDFS上下載文件或文件夾到本地
*
* **/
public static void downloadFileorDirectoryOnHDFS()throws Exception{
FileSystem fs=FileSystem.get(conf);
Path p1 =new Path("hdfs://10.2.143.5:9090/root/myfile//my2.txt");
Path p2 =new Path("D://7");
fs.ToLocalFile(p1, p2);
fs.close();//釋放資源
}
/**
* 在HDFS上創建一個文件夾
*
* **/
public static void createDirectoryOnHDFS()throws Exception
FileSystem fs=FileSystem.get(conf);
Path p =new Path("hdfs://10.2.143.5:9090/root/myfile");
fs.close();//釋放資源
System.out.println("創建文件夾成功.....");
}
/**
* 在HDFS上刪除一個文件夾
*
* **/
public static void deleteDirectoryOnHDFS()throws Exception{
FileSystem fs=FileSystem.get(conf);
Path p =new Path("hdfs://10.2.143.5:9090/root/myfile");
fs.close();//釋放資源
System.out.println("刪除文件夾成功.....");
}
/**
* 在HDFS上創建一個文件
*
* **/
public static void createFileOnHDFS()throws Exception{
FileSystem fs=FileSystem.get(conf);
Path p =new Path("hdfs://10.2.143.5:9090/root/abc.txt");
fs.createNewFile(p);
//fs.create(p);
fs.close();//釋放資源
System.out.println("創建文件成功.....");
}
/**
* 在HDFS上刪除一個文件
*
* **/
public static void deleteFileOnHDFS()throws Exception{
FileSystem fs=FileSystem.get(conf);
Path p =new Path("hdfs://10.2.143.5:9090/root/abc.txt");
fs.deleteOnExit(p);
fs.close();//釋放資源
System.out.println("刪除成功.....");
}
/***
* 上傳本地文件到
* HDFS上
*
* **/
public static void uploadFile()throws Exception{
//載入默認配置
FileSystem fs=FileSystem.get(conf);
//本地文件
Path src =new Path("D:\\6");
//HDFS為止
Path dst =new Path("hdfs://10.2.143.5:9090/root/");
try {
fs.FromLocalFile(src, dst);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("上傳成功........");
fs.close();//釋放資源
}
⑸ hadoop學習需要java的哪些基礎知識
在平台方面,hadoop環境需要搭建在linux伺服器上,首先需要了解Linux的基礎知識與命令;
開發方面,hadoop首先是個提供大數據存儲的平台,因此我們要使用其存儲功能,因此需要掌握其數據操作的api(scala api 或者 java api);其次是hadoop是大數據分析的數據源,熟悉對大數據的 分析/使用 方法(spark/map-rece技術,都有scala 和 java兩種api)。
因此,學習hadoop必須掌握scala或者java中的一門開發語言,然後在學習hadoop數據操作命令,api,spark/map-rece分析技術。
另外,還可以學習hbase這種基於hdfs的結構化大數據存儲技術,和flume大數據採集技術。
⑹ 怎麼用javaapi往hadoopha集群
有幾種可能: 有的伺服器硬碟空間不夠,發揮不了hadoop集群的優勢; 復制副本的數量較多,hadoop默認副本是3份,可以改成2或者1; 可以將伺服器改為內網,不會影響其它伺服器帶寬
⑺ hdfs 的java api操作要配置hadoop環境嗎
需要配置 ,
需要配置幾個配置文件在你的resources目錄下
hdfs-site.xml yarn-site.xml core-site.xml
看具體情況如果使用mr程序還需要 mapred-site.xml 具體文件參數和你hadoop集群的配置有關可以查閱官方配置文檔
⑻ java newapihadoopfile 怎麼 用
不清楚。這卡不能在冒險模式中使用,所以可能限定在天梯加休閑(構築)或競技場模式中使用。
如果不能在亂斗模式中使用,應該是個BUG。
⑼ java.api操作hadoop的hdfs需要什麼許可權嗎
不知道你說的「調用Filesystem命令」是什麼意思;使用hadoop fs -rm可以正常執行,MapRece也可以正常讀寫HDFS文件,說明HDFS文件系統沒有問題。你不妨試一試hadoop fs -chmod a+rwx <path>設置rwx許可權後,再試一次。