Hadoop伪分布安装及简单使用
如何安裝Hadoop
參考: http://dblab.xmu.edu.cn/blog/install-hadoop/
設置Hadoop環境變量
export HADOOP_HOME=/usr/local/hadoop export HADOOP_INSTALL=$HADOOP_HOME export HADOOP_MAPRED_HOME=$HADOOP_HOME export HADOOP_COMMON_HOME=$HADOOP_HOME export HADOOP_HDFS_HOME=$HADOOP_HOME export YARN_HOME=$HADOOP_HOME export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib:$HADOOP_COMMON_LIB_NATIVE_DIR"如果不加最后一條,會出現以下錯誤
WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable](http://www.cnblogs.com/likui360/p/6558749.html)安裝方式
這里采用偽分布安裝配置:
核心
1.屬于HDFS的節點
-
NameNode
名稱節點,相當于目錄服務器 ,應用來取數據的時候,首先訪問NameNode,去獲得我要訪問的數據到底放在了哪個DataNode上面.
名稱節點包括:
再來看一下FsImage,它維護的信息包括以下:
注意:
塊在哪個節點存儲的并不是由FsImage維護的,而是一個單獨的內存區域,而是下面這種方式;
DataNode會向NameNode匯報自己節點保存哪些數據塊,作為管家的NameNode會構建一個清單,它自己就知道數據塊到底分布到了哪個節點.(并不是由FsImage保存的)
- #####DataNode
2.屬于MapReduce的核心組件
JobTracker負責對整個用戶作業進行管理,它把一個用戶的大作業拆分成小的作業.分發到不同的機器上去執行
TaskTracker每個機器都部署了TaskTracker,每一個負責跟蹤和執行分配給自己的那一部分作業
HDFS編程實踐
參考 http://dblab.xmu.edu.cn/blog/290-2/
我們又兩種方式訪問HDFS,如下圖所示
在安裝完Hadoop后,我們可以使用一下命令啟動Hadoop
cd /usr/local/hadoop hdfs namenode -format #格式化hadoop的hdfs文件系統 ./sbin/start-dfs.sh #啟動hadoop方式一:利用shell命令
三種不同的命令類型,適用于不同的情景,具體區別見下圖
- ls列出文件信息,mkdir新建文件夾
- 將本地文件上傳到HDFS
web方式(用的比較少)
通過訪問 http://localhost:50070
方式二:利用java API
應用商店安裝eclipse,默認工作空間.
1)創建項目
File - New -Java Project,輸入項目名稱,finish
2)導入jar包
為了編寫一個能夠與HDFS交互的Java應用程序,一般需要向Java工程中添加以下JAR包:
(1)”/usr/local/hadoop/share/hadoop/common”目錄下的hadoop-common-2.7.1.jar和haoop-nfs-2.7.1.jar;
(2)/usr/local/hadoop/share/hadoop/common/lib”目錄下的所有JAR包;
(3)“/usr/local/hadoop/share/hadoop/hdfs”目錄下的haoop-hdfs-2.7.1.jar和haoop-hdfs-nfs-2.7.1.jar;
(4)“/usr/local/hadoop/share/hadoop/hdfs/lib”目錄下的所有JAR包。
右鍵新建的項目 - 選擇properties - 搜索Java Build Path - Libraries -Add External JARS
實例測試
檢測分布式文件系統HDFS上到底存不存在一個input.txt文件?
在這之前,還需要一些工作
第一步:
把core-site.xml和hdfs-site.xml(在/usr/local/hadoop/etc/hadoop目錄下),復制到當前工程項目下,即eclipse工作目錄的bin文件夾下面
第二步: 編寫代碼
package fileTest; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path;public class FileExitTest {/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stubtry{String filename = "test";Configuration conf = new Configuration();FileSystem fs = FileSystem.get(conf);if(fs.exists(new Path(filename))){System.out.println("file exist");}else{System.out.print("file is not exist");}}catch(Exception e){e.printStackTrace();}} }或者采用下面的方法
(此時不需要將core-site.xml和hdfs-site.xml拷貝至項目bin目錄下)
應用程序的部署
下面介紹如何把Java應用程序生成JAR包,部署到Hadoop平臺上運行。首先,在Hadoop安裝目錄下新建一個名稱為myapp的目錄,用來存放我們自己編寫的Hadoop應用程序,可以在Linux的終端中執行如下命令:
hadoop@user:/usr/local/hadoop$ cd /usr/local/hadoop hadoop@user:/usr/local/hadoop$ mkdir myapp
之后jar文件并生成并保存在了/usr/local/hadoop/myapp目錄下.
可以采用以下兩種命令來執行
或者
java -jar ./myapp/HDFSExample.jar總結
以上是生活随笔為你收集整理的Hadoop伪分布安装及简单使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 操作系统OS-分页、页表
- 下一篇: 数据库MySQL关系模型之关系代数