[Hadoop 1] 構建一個單節點叢集
目的
能夠快速的在一單個節點上構建和配置 Hadoop,使用 MapReduce 和 Hadoop Distributed File System(HDFS)來執行簡單的操作。
準備
支援平臺
建議使用 GNU/Linux 作為開發和執行平臺。
所需軟體
Linux 下所需要的軟體是:
- 必須安裝 Java
TM ,Hadoop 2.7 及以上版本需要 Java 7。
- linux下配置 Oracle JDK
- 必須安裝 ssh,sshd服務必須執行,來使用 Hadoop 指令碼來管理遠端 Hadoop 服務。同時,也建議安裝 pdsh,更好地進行 ssh 資源管理。
下載
從 Apache 下載映象 下載最近的穩定釋出版。我所下載的是 hadoop-2.9.0.tar.gz
。
開始 Hadoop 叢集前的準備
將 Hadoop 包解壓到指定目錄下。進入 Hadoop 目錄,編輯 etc/hadoop/hadoop-env.sh,定義以下引數:
# set to the root of your Java installation
export JAVA_HOME=/usr/java/latest
測試以下命令:
$ bin/hadoop
該命令將會顯示 hadoop 指令碼的使用文件。
接下來便能夠選擇以下三種模式中的一種來開始 Hadoop 叢集:
- 本地(離線)模式
- 假分佈模式
- 全分佈模式
離線模式
Hadoop 預設以非分佈模式執行,僅作為單一 Java 程序,這是有利於除錯的。
假分佈模式
Hadoop 也可以在單一結點上以假分佈模式執行,每個 Hadoop服務分別以不同的 Java 程序執行。
配置
使用以下配置:
etc/hadoop/core-site.xml
:
<configuration>
<property>
<name>fs.defaultFS</name>
<value >hdfs://localhost:9000</value>
</property>
</configuration>
etc/hadoop/hdfs-site.xml
:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
建立免密碼的 ssh
現在檢查是否可以免密碼 ssh 到 localhost:
$ ssh localhost
如果不能,則執行以下命令:
$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ chmod 0600 ~/.ssh/authorized_keys
執行
格式化檔案系統:
$ bin/hdfs namenode -format
開啟 NameNode 服務和 DataNode服務:
$ sbin/start-dfs.sh
可以通過以下 IP 訪問 NameNode 的 Web 介面:
Shell操作
將本地原始檔<localsrc>複製到路徑<dst>指定的檔案或資料夾中去:
hadoop fs -copyFromLocal <localsrc> <dst>
hdfs dfs -copyFromLocal <localsrc> <dst>
$ bin/hadoop fs -copyFromLocal /home/bob/tmpfile/* hdfs://127.0.0.1:9000/tmpDir/
$ bin/hdfs dfs -copyFromLocal /home/bob/tmpfile/* /tmpDir/
建立<path>指定的資料夾:
hadoop fs -mkdir <path>
hdfs dfs -mkdir <path>
$ bin/hadoop fs -mkdir hdfs://127.0.0.1:9000/tmpDir
$ bin/hdfs dfs -mkdir /tmpDir
顯示<path>指定目錄的清單:
hadoop fs -ls <path>
hdfs dfs -ls <path>
$ bin/hadoop fs -ls hdfs://127.0.0.1:9000/
$ bin/hdfs dfs -ls /