java hadoop api,Hadoop API,HadoopAPI
Hadoop API,HadoopAPI
HDFS JAVA APIversion 273
HBASE JAVA APIversion 124
MAPREDUCE JAVA APIversion 273
HDFS JAVA API(version 2.7.3)
HDFS 分布式文件系統JAVA API。與local的java 文件系統的API類似。
Name
Descriptionorg.apache.hadoop.conf.configuration
hadoop中java API使用最多的一個類,很多其他類會使用到配置文件,該類的實例代表內存中的配置文件.提供操作配置文件的方法。存儲在配置文件中寫入的鍵值對。一般使用構造函數構造實例即可,Configuration conf = new Configuration() 其他操作參數的API使用不多。
org.apache.hadoop.fs.FileSystem
文件系統中的抽象基類,HDFS對其實現為DistributedFileSystem代表整個文件系統。抽象類中提供兩個方法open用于創建一個輸入流FSDataInputStream,同樣是一個抽象基類,其HDFS的實現為DFSInputStream。create用于創建一個輸出流FSDataOutputStream。在HDFS中對于輸出流的實現是DFSOutputStream。凡是需要使用到HDFS的讀寫都要使用這個抽象基類的實現。這個抽象基類還可以作為本地文件系統實現。作為本地文件系統實現的類是LocalFileSystem。重要方法copyFromLocalFile從本地拷貝文件到系統中。create創建新的文件,并且返回一個輸出流。delete刪除文件,可以遞歸刪除文件夾中的內容。exists檢測path中的內容是否存在。get方法,比較重要的方法,本身FileSystem是抽象的類,不可以實例化,get方法是FileSystem中存在的一個抽象的方法,返回FileSystem的實例,之后就可以用這個實例完成分布式文件系統的所有操作。這個方法一般是作為第一個調用的方法。get(Uri(可選),Configuration(org.apache.hadoop.conf.Configuration),user(可選))Uri這個變量用于指定實際訪問的機器。分布式場景中使用FileSystem需要指定操作的文件系統。如果不指定會在本機的文件系統中去操作文件,所以Uri在此處是比較重要的變量。getStatus
返回一個FsStatus實例表征文件系統的空間以及使用量。參數Path代表分區,為空或者不寫則是表示根分區的使用量以及容量。容易與FileStatus搞混。一般調用方法getCapacity() and getUsed().listStatus返回一個FileStatus的Array。表征文件夾下的所有內容(文件或者子文件夾)的狀態。操作對象為文件夾,非文件夾返回本身代表的FileStatus.該函數可以接收的參數類型比較多。Path與Path[] 區別在于path獲取的是path內部的內容轉換為FileStatus。而Path[]將這個list內容轉換為FileStatus[]。兩種調用都可以添加Filter進行過濾。isDirectory
isFile后面接Path用于判斷給定Path是文件還是文件夾。mkdirs(path)創建目錄。rename(pathsrc,pathdst)改變path可以理解為在文件系統中移動文件
org.apache.hadoop.fs.FSDataInputStream
文件輸入流的抽象基類
org.apache.hadoop.fs.FSDataOutputStream
文件輸出流的抽象基類
org.apache.hadoop.fs.Path
表征文件系統中的文件或者文件夾路徑的實例,純粹路徑沒有其他功能,基本上FileSystem的方法中都有傳遞這個參數
org.apache.hadoop.fs.FileStatus
提供文件系統中的詳細信息。反應文件組路徑,大小擁有者等文件相關信息,但是不提供返回讀寫流的方法。所以需要借助于FileSystem類提供的方法完成文件的讀寫操作。
org.apache.hadoop.fs.FsStatus
文件代表文件系統的空間以及使用量,有getCapacity和getUsed方法調用
java.net.URI
URI類在hadoop文件系統中用于指定文件系統的模式,在創建FileSystem實例的時候需要用URI指定這個文件系統實例實際對應集群中的某一臺機器。URI.create(Schema)
綜上所述。HDF HAVA操作的API主要是圍繞FileSystem抽象基類展開。get用于創建實例。需要用URI指定系統的schema以及Configuration配置實例。文件創建使用create返回一個FSDataOutputStream 文件打開使用Open返回FSDataInputStream。返回的都是抽象類在具體系統的實現。FileStatus用是文件的狀態抽象。
HBASE JAVA API(version 1.2.4)
HBASE JAVA API
Name
Descriptionorg.apache.hadoop.hbase.HBaseConfiguration
HBase使用的Configuration對象,同樣表示HBase的配置文件。創建方式略微不同使用靜態的create()方法創建。因為HBaseConfiguration繼承自Configuration所以返回類型可以是Configuration
org.apache.hadoop.hbase.HTableDescriptor
HBase中table的抽象描述,定義了整個HBase表的結構。主要用于在創建表的時候決定表的schema.addFamily(HColumnDescriptor)添加列族,removeFamily(HColumnDescriptor)移除列族.方法中傳遞參數為byte[]型.setName/getName設置與返回表名字,getFamilies()獲取列族名字構成的一個set.返回類型為Set byte[].創建的時候使用new 調用構造函數創建,不過方法被舍棄了
org.apache.hadoop.hbase.client.HBaseAdmin
用于管理HBase中表的信息,包括表的創建createTable(HTableDescriptor),表的是能disableTable/enableTable(tablename)以及表的刪除deleteTable(String tablename)或者是表的擴展,為表項添加新的列族等
org.apache.hadoop.hbase.client.HTable
客戶端內存中用于與HBase表進行通信,CRUD操作是在HTable上進行的本身具有緩沖區,不適合于在多線程的應用場景中,多線程應用場景可能導致緩沖區溢出,所以多線程情況下使用HBasePool,即是HBase的鏈接池。常用方法:close()刷新緩沖區,將緩沖區內容刷入HBase數據庫中.HTable中沒有提供update這樣的方法,本來HBase數據庫單元中存儲數據就有多個版本,沒有比較使用update函數,本身任何單元數據的改變都會被記錄,而且針對于NoSql,update的意義本來就不大。delete(Delete
item)刪除內容,get(Get get)查詢單元格內容,put(Put put)插入內容。exists(Get get)內容是否存在。getScanner(**)更廣的一個查詢方式,返回的是ResultScanner。get這樣的API需要指定查詢的行號,所以查詢范圍更加的限定。getTableDescriptor()返回HTableDescriptor。創建時用new 構造函數創建,不過還是被舍棄了
org.apache.hadoop.hbase.HColumnDescriptor
列族的描述,類比于HTableDescriptor.構建關于列的描述,常用方法是getName獲取列族名稱,setValue以及getValue
org.apache.hadoop.hbase.client.Put
執行單元格數據的添加操作,主要是指定列族與列限定符號,將數據封裝如Put里面進行數據庫插入,主要是使用Put中的add方法添加限定的查詢信息
org.apache.hadoop.hbase.client.Get
與Put類似,Get用于獲取Hbase數據庫中的單行的信息.主要方法是addColumn()添加列族以及列限定符號的信息,用于查詢
org.apache.hadoop.hbase.client.Result
返回Get或者Scan操作后的結果,存儲為鍵值對
org.apache.hadoop.hbase.client.Scan
用于限定要查找的數據,比Get使用更加靈活,可以限定查詢行號的范圍,而Get不具備這種功能
org.apache.hadoop.hbase.client.ResultScanner
本質上為一個迭代器,調用next返回下一個Result對象,表示的是一系列的查詢結果
org.apache.hadoop.client.Connection
鏈接對象,使用ConnectionFactory.createConnection()創建,用于構建操作數據庫的HBaseAdmin
org.apache.hadoop.client.ConnectionFactory
構建Connection對象,表征與數據庫的鏈接,后續用于創建操作數據庫的HBaseAdmin
org.apache.hadoop.habse.client.Cell
HBase返回的Result中的數據單元,通過rawCells返回數據單元格的一個list
org.apache.hadoop.hbase.client.CellUtil
數據庫單元操作工具,主要用于拷貝單元數據
綜上所述。Hbase的API調用比HDFS的多。基本的類型是HBaseConfiguration用于構建配置文件的實例,與表的Schema相關的為HTableDescriptor以及HColumnDescriptor還有HBaseAdmin。構建Connection是每一步必須有的操作。
Connection con = ConnectionFactory.createConnection(configuration);
HBaseAdmin admin = (HBaseAdmin)con.getAdmin();
HTable table = (HTable)con.getTable(TableName.valueOf(name));1
2
3
后續的數據庫的增刪改查操作可以在獲得的table對象上進行。
MAPREDUCE JAVA API(version 2.7.3)
MR 的JAVA API
Name
Descriptionorg.apache.hadoop.mapreduce.Mapper
Mapper類,編寫hadoop mr程序的Map過程時候需要繼承這一個類實現其中的map方法。
org.apache.hadoop.mapreduce.Reducer
Reducer類,編寫Hadoop mr程序的Reduce過程時候需繼承的一個類,需要實現其中的reduce方法
org.apache.hadoop.mapreduce.Mapper.Context
用于將Map產生的結果當中間值輸出,一般是輸出key/value值
org.apache.hadoop.mapreduce.Reducer.Context
同Mapper.Context。將Reducer處理的結果進行輸出
org.apache.hadoop.io.Text
可以理解為Hadoop中專門處理字符串的類型
org.apache.hadoop.io.IntWritable
可以理解為hadoop中專門處理整數的類型
org.apache.hadoop.mapreduce.Job
這個類也是Hadoop mr中非常重要的類型。用于定義任務以及提交任務到Hadoop mr集群處理。setJarClass()設置main函數所在的類,程序入口。setInputFormatClass()設置輸入類型的類,setOutputFormatClass()設置輸出類型的類。setMapOutputKeyClass()設置Map處理輸出的鍵類型,setMapOutputValueClass()設置Map處理輸出的值類型,setOutputKeyClass()設置reduce輸出的key類型,setOutputValueClass()設置reduce輸出的value類型。waitForCompletion()提交任務運行。
org.apache.hadoop.hbase.mapreduce.TableReducer
故名思意,當MR 的reduce處理結果需要放置在HBase中的時候,那么Reduce應該從這個類型繼承
核心是編寫繼承的Mapper類與Reducer類,以及Job實例完成類型設置,提交任務運行。
相關文章暫無相關文章
總結
以上是生活随笔為你收集整理的java hadoop api,Hadoop API,HadoopAPI的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java泛型中的标记,Java泛型中的标
- 下一篇: oracle 0 函数吗,Oracle9