Hadoop1.2中配置偽分布式的實(shí)例
1、設(shè)置ssh
安裝ssh相關(guān)軟件包:
然后使用下面兩個(gè)命令之一啟動(dòng)/關(guān)閉sshd:
sudo service ssh start|stop
若成功啟動(dòng)sshd,我們能看到如下類似結(jié)果:
2766 ? 00:00:00 ssh-agent
10558 ? 00:00:00 sshd
這時(shí)候,如果運(yùn)行如下ssh登錄本機(jī)的命令,會(huì)提示輸入密碼:
現(xiàn)在我們要做的就是讓它不需要輸入密碼:
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
這樣的話就行了。如果仍不湊效,可能是密鑰文件的權(quán)限設(shè)置不當(dāng)。
2、配置hadoop
將hadoop-1.2.1解壓到~/下,同時(shí)在~/下建立目錄hadoop-env,繼續(xù)在hadoop-env下建立如下的目錄結(jié)構(gòu):
├── dfs
│ ├── checkpoint1
│ ├── data1
│ ├── data2
│ └── name1
└── test
└── input
配置文件hadoop-1.2.1/conf/core-site.xml:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
<final>true</final>
</property>
</configuration>
fs.default.name來指定HDFS的uri,如果value中沒有提供端口,默認(rèn)為8020。
配置文件hadoop-1.2.1/conf/hdfs-site.xml:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>dfs.name.dir</name>
<value>~/hadoop-env/dfs/name1</value>
<final>true</final>
</property>
<property>
<name>dfs.data.dir</name>
<value>~/hadoop-env/dfs/data1,~/hadoop-env/dfs/data2</value>
<final>true</final>
</property>
<property>
<name>fs.checkpoint.dir</name>
<value>~/hadoop-env/dfs/checkpoint1</value>
<final>true</final>
</property>
</configuration>
dfs.name.dir指定namenode存儲(chǔ)元數(shù)據(jù)的目錄,可以指定多個(gè)目錄,這些目錄要用逗號(hào)分開;dfs.data.dir指定datanode存放數(shù)據(jù)的目錄,可以指定多個(gè)目錄;fs.checkpoint.dir指定輔助namenode存放檢查點(diǎn)的目錄。
配置文件hadoop-1.2.1/conf/mapred-site.xml:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>localhost:9001</value>
<final>true</final>
</property>
</configuration>
3、測(cè)試
先格式化HDFS:
啟動(dòng)HDFS和MapReduce進(jìn)程:
$ ./hadoop-1.2.1/bin/start-dfs.sh
$ ./hadoop-1.2.1/bin/start-mapred.sh
啟動(dòng)時(shí)候如果報(bào)錯(cuò),例如localhost: Error: JAVA_HOME is not set.,需要在./hadoop-1.2.1/conf/hadoop-env.sh文件中export JAVA_HOME,例如:
export JAVA_HOME=~/jdk1.7.0_25
如何檢查是否成功啟動(dòng)了: 第一種方法是使用jps命令(Java Virtual Machine Process Status Tool),應(yīng)該有如下類似輸出:
$ jps
13592 DataNode
13728 SecondaryNameNode
13837 JobTracker
12864 NameNode
13955 TaskTracker
16069 Jps
第二種方法是瀏覽器登錄http://localhost:50030查看jobtracker,http://localhost:50070查看namenode。
現(xiàn)在我們?cè)趡/hadoop-env/test/input目錄下建立兩個(gè)文件:
$ echo "hello world" > test1.txt
$ echo "hi,world" > test2.txt
把這兩個(gè)文件導(dǎo)入HDFS:
./hadoop-1.2.1/bin/hadoop dfs -put hadoop-env/test/input/ output/
查看:
$ ./hadoop-1.2.1/bin/hadoop dfs -ls /
Found 2 items
drwxr-xr-x - user supergroup 0 2013-10-22 22:07 /test
drwxr-xr-x - user supergroup 0 2013-10-22 21:58 /tmp
$ ./hadoop-1.2.1/bin/hadoop dfs -ls /test
Found 2 items
-rw-r--r-- 3 user supergroup 12 2013-10-22 22:07 /test/test1.txt
-rw-r--r-- 3 user supergroup 9 2013-10-22 22:07 /test/test2.txt
OK,配置完成。
注:本文使用的系統(tǒng)是linux mint 15 64bit,hadoop使用的是1.2.1版本。
相關(guān)文章
java并發(fā)中ExecutorService的具體用法
本文深入探討Java中的ExecutorService框架,介紹其創(chuàng)建方法、任務(wù)分配、關(guān)閉策略及Future、ScheduledExecutorService的使用,對(duì)比Fork/Join框架,提供豐富的代碼示例,感興趣的朋友跟隨小編一起看看吧2025-09-09
關(guān)于servlet向mysql添加數(shù)據(jù)時(shí)中文亂碼問題的解決
最近在工作中遇到一個(gè)小問題,出現(xiàn)了中文亂碼的問題,無奈只能想辦法解決,下面這篇文章主要給大家介紹了關(guān)于servlet向mysql添加數(shù)據(jù)時(shí)中文亂碼問題的解決方法,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來一起看看吧。2017-08-08
MyBatis的mapper.xml文件熱加載功能實(shí)現(xiàn)方案
文章分析了Arthas無法直接熱替換MyBatis的mapper.xml文件的限制,并提出了多種變通方法來實(shí)現(xiàn)類似效果,這些方法包括結(jié)合MyBatis的熱加載功能、使用Arthas和類重加載、動(dòng)態(tài)刷新MappedStatement等,文章還建議在不同環(huán)境中使用不同的解決方案,需要的朋友可以參考下2026-02-02
java線程池ThreadPoolExecutor類使用小結(jié)
這篇文章主要介紹了java線程池ThreadPoolExecutor類使用,本文主要對(duì)ThreadPoolExecutor的使用方法進(jìn)行一個(gè)詳細(xì)的概述,示例代碼介紹了ThreadPoolExecutor的構(gòu)造函數(shù)的相關(guān)知識(shí),感興趣的朋友一起看看吧2022-03-03
Java對(duì)xls文件進(jìn)行讀寫操作示例代碼
Java開發(fā)項(xiàng)目中經(jīng)常會(huì)碰到處理Excel文件中數(shù)據(jù)的情況,下面這篇文章主要給大家介紹了利用Java對(duì)xls文件進(jìn)行讀寫操作的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧。2017-08-08
詳解Java去除json數(shù)據(jù)中的null空值問題
這篇文章主要介紹了詳解Java去除json數(shù)據(jù)中的null空值問題,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08
Java實(shí)現(xiàn)FIFO功能的完整代碼實(shí)踐
在軟件開發(fā)中,隊(duì)列(Queue)是一種常見的數(shù)據(jù)結(jié)構(gòu),其特點(diǎn)是先進(jìn)先出(FIFO,First In First Out),FIFO 隊(duì)列在生產(chǎn)者-消費(fèi)者模型、任務(wù)調(diào)度、緩沖區(qū)管理等場(chǎng)景中具有廣泛的應(yīng)用,本文給大家介紹了Java實(shí)現(xiàn)FIFO功能的完整代碼實(shí)踐,需要的朋友可以參考下2025-03-03
SpringBoot 整合Tess4J庫實(shí)現(xiàn)圖片文字識(shí)別案例詳解
Tess4J是一個(gè)基于Tesseract OCR引擎的Java接口,可以用來識(shí)別圖像中的文本,說白了,就是封裝了它的API,讓Java可以直接調(diào)用,今天給大家分享一個(gè)SpringBoot整合Tess4j庫實(shí)現(xiàn)圖片文字識(shí)別的小案例2023-10-10
Java多線程編程中synchronized關(guān)鍵字的基礎(chǔ)用法講解
Java的synchronized關(guān)鍵字用于修飾線程同步,用以線程資源共享的目的等,下面就帶來簡(jiǎn)單的Java多線程編程中synchronized關(guān)鍵字的基礎(chǔ)用法講解2016-06-06

