在Ubuntu上單機安裝Hadoop

深藍發表於2015-04-03

最近大資料比較火,所以也想學習一下,所以在虛擬機器安裝Ubuntu Server,然後安裝Hadoop。

以下是安裝步驟:

1. 安裝Java

如果是新機器,預設沒有安裝java,執行java –version命名,看是否可以檢視Java版本,如果未安裝Java,這執行以下命名:

# Update the source list
$ sudo apt-get update

# The OpenJDK project is the default version of Java
# that is provided from a supported Ubuntu repository.
$ sudo apt-get install default-jdk

$ java -version

2.設定Hadoop使用者和組

$sudo addgroup hadoop

$ sudo adduser --ingroup hadoop hduser

3.安裝並配置SSH

$ sudo apt-get install ssh

$ su hduser

$ ssh-keygen -t rsa -P ""

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

接下來執行ssh命令,測試一下是否成功.

$ ssh localhost

4.安裝Hadoop

首先需要下載並解壓Hadoop檔案,執行命令:

$wget http://apache.spinellicreations.com/hadoop/common/hadoop-2.6.0/hadoop-2.6.0.tar.gz

這裡的URL是最新的Hadoop2.6.0版,安裝的時候可以先到官方網站看看需要下載哪個版本,然後更換這個Url.

下載完畢後,就是解壓縮:

$ tar xvzf hadoop-2.6.0.tar.gz

然後將Hadoop資料夾搬到新資料夾,並且給hduser這個使用者許可權:

$ sudo mv hadoop-2.6.0 /usr/local/hadoop

$ cd /usr/local

$ sudo chown -R hduser:hadoop hadoop

 

5.配置Hadoop

接下來我們可以使用putty通過ssh連線到Ubuntu了,將當前使用者切換到hduser做如下的操作:

5.1修改~/.bashrc檔案

首先執行命令檢視Java的路徑:

$ update-alternatives --config java
There is only one alternative in link group java (providing /usr/bin/java): /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java
Nothing to configure.

這裡我們需要的JavaHome就是:/usr/lib/jvm/java-7-openjdk-amd64,【注意,這裡沒有後面的/jre/bin/java部分】 ,然後使用vi編輯~/.bashrc

#HADOOP VARIABLES START
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
export HADOOP_INSTALL=/usr/local/hadoop
export PATH=$PATH:$HADOOP_INSTALL/bin
export PATH=$PATH:$HADOOP_INSTALL/sbin
export HADOOP_MAPRED_HOME=$HADOOP_INSTALL
export HADOOP_COMMON_HOME=$HADOOP_INSTALL
export HADOOP_HDFS_HOME=$HADOOP_INSTALL
export YARN_HOME=$HADOOP_INSTALL
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_INSTALL/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_INSTALL/lib/native"
#HADOOP VARIABLES END

5.2修改hadoop-env.sh檔案

檔案的路徑為:/usr/local/hadoop/etc/hadoop/hadoop-env.sh,找到對應的行,將內容改為:

export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64

5.3修改core-site.xml檔案

在修改這個檔案之前,我們需要使用超級使用者建立一個目錄,並給予hduser該目錄的許可權:

$ sudo mkdir -p /app/hadoop/tmp
$ sudo chown hduser:hadoop /app/hadoop/tmp

接下來切換回hduser使用者,修改配置檔案,檔案路徑:/usr/local/hadoop/etc/hadoop/core-site.xml,使用VI,將配置改為:

<configuration>
<property>
  <name>hadoop.tmp.dir</name>
  <value>/app/hadoop/tmp</value>
  <description>A base for other temporary directories.</description>
</property>

<property>
  <name>fs.default.name</name>
  <value>hdfs://localhost:54310</value>
  <description>The name of the default file system.  A URI whose
  scheme and authority determine the FileSystem implementation.  The
  uri's scheme determines the config property (fs.SCHEME.impl) naming
  the FileSystem implementation class.  The uri's authority is used to
  determine the host, port, etc. for a filesystem.</description>
</property>
</configuration>

5.4修改mapred-site.xml

預設情況下,我們只有/usr/local/hadoop/etc/hadoop/mapred-site.xml.template,我們需要先基於這個檔案,copy一個新的檔案出來,然後再進行修改。

$ cp /usr/local/hadoop/etc/hadoop/mapred-site.xml.template /usr/local/hadoop/etc/hadoop/mapred-site.xml

使用VI開啟,修改配置如下:

<configuration>
<property>
  <name>mapred.job.tracker</name>
  <value>localhost:54311</value>
  <description>The host and port that the MapReduce job tracker runs
  at.  If "local", then jobs are run in-process as a single map
  and reduce task.
  </description>
</property>
</configuration>

5.5修改hdfs-site.xml檔案

在修改之前,也是需要切換回超級管理員賬戶,建立需要用到的目錄:

$ sudo mkdir -p /usr/local/hadoop_store/hdfs/namenode
$ sudo mkdir -p /usr/local/hadoop_store/hdfs/datanode
$ sudo chown -R hduser:hadoop /usr/local/hadoop_store

然後切換回來hduser使用者,修改配置檔案:/usr/local/hadoop/etc/hadoop/hdfs-site.xml,改為:

<configuration>
<property>
  <name>dfs.replication</name>
  <value>1</value>
  <description>Default block replication.
  The actual number of replications can be specified when the file is created.
  The default is used if replication is not specified in create time.
  </description>
</property>
<property>
   <name>dfs.namenode.name.dir</name>
   <value>file:/usr/local/hadoop_store/hdfs/namenode</value>
</property>
<property>
   <name>dfs.datanode.data.dir</name>
   <value>file:/usr/local/hadoop_store/hdfs/datanode</value>
</property>
</configuration>

6.格式化HDFS

$ hadoop namenode –format

如果發現hadoop這個命令不認識,那是因為環境變數沒有載入,最簡單辦法就是登出,然後再登入hduser就可以了。這個命令會刪掉所有已經存在的資料,所以如果已經有資料的情況下,慎用這個命令。

7.啟動Hadoop

首先啟用無密碼的ssh。不然接下來啟動的時候會不斷的提示輸入密碼,很煩人。

ssh-keygen -t rsa

預設位置,無密碼生成金鑰。

chmod 755 ~/.ssh

cd ~/.ssh

cat id_rsa.pub >> authorized_keys

接下來我們試一下使用ssh連線本地,看能連線成功不:

ssh localhost

接下來是啟動Hadoop的服務。

使用$ start-all.sh就可以啟動Hadoop了,判斷是否啟動成功,我們可以執行jps命令,我們可以看到如下的結果,說明已經啟動成功了:

$ jps
2149 SecondaryNameNode
1805 NameNode
2283 ResourceManager
1930 DataNode
2410 NodeManager
2707 Jps
另外,我們可以訪問Hadoop的Web,地址是:

http://serverIP:50070/

8.關閉Hadoop

執行命令:

$ stop-all.sh

好了,終於在虛擬機器中將Hadoop搭建成功。整個操作過程參考了另一篇部落格:

http://www.bogotobogo.com/Hadoop/BigData_hadoop_Install_on_ubuntu_single_node_cluster.php

我只是把其中需要注意的幾個地方重新說明了一下,借花獻佛。

相關文章