1. 程式人生 > >ubuntu+hadoop2.6.0+單機模式

ubuntu+hadoop2.6.0+單機模式

單機模式:
deepin + hadoop2.6.0 + jdk1.8.0_77

新建組合使用者,以後所有操作都在該使用者下進行:

sudo addgroup hadoop
sudo adduser --ingroup hadoop hduser

1. 配置jdk

(1)下載jdk.tar.gz, 解壓到/usr/lib/jvm/, 比如jdk1.8.0_77,那麼解壓後java最終路徑為/usr/lib/jvm/jdk1.8.0_77, 如果使用apt-get安裝,則不需要設定java環境變數,但是安裝的是openjdk,openjdk的包裡面沒有jps命令,啟動hadoop後的檢驗需要jps命令(其實沒有多大的影響),這裡推薦下載壓縮包解壓的方式

(2)設定java環境變數:sudo gedit ~/.bashrc,新增內容如下:

export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_77
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
然後source ~/.bashrc,在deepin中可能會source失敗,將上述內容新增到~/.zshrc,source成功

2. 安裝ssh(遠端連線工具)

sudo apt-get install openssh-server

ssh-keygen -t rsa -P "" 生成公鑰和私鑰,可以實現免密碼登入

cat $HOME/.ssh/id_rsa.pub >> $Home/.ssh/authorized_keys 複製給本機

(ssh遠端:ssh username@hostname,埠情況:+ -p port號,scp的話則使用scp -P port號 路徑1 路徑2,使用~/.ssh/config檔案配置方法,config內容如下:

Host h
    HostName ip
    User u
    Port 埠號
將公鑰複製到遠端機器,之後可直接使用ssh h連線

)

3. 關閉ipv6,hadoop不支援ipv6 ,更改/etc/sysctl.conf檔案

# disable ipv6
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1

4. 配置hadoop

(1)下載hadoop2.6.0,解壓到/usr/local/:sudo tar -zxvf hadoop-2.6.0.tar.gz -C /usr/local/,然後將名字改為hadoop:sudo mv hadoop-2.6.0 hadoop

(2)將hadoop資料夾的使用者持有更改為hduser:

sudo chown hduser:hadoop -R /usr/local/hadoop/
(3)建立hadoop namenode 和 datanode的temp 目錄,並將temp資料夾的使用者持有者更改為hduser:
sudo mkdir -p /usr/local/hadoop_tmp/hdfs/namenode
sudo mkdir -p /usr/local/hadoop_tmp/hdfs/datanode
sudo chown hduser:hadoop -R /usr/local/hadoop_tmp/
(4)設定hadoop環境變數,sudo gedit $HOME/.bashrc,新增:
# -- HADOOP ENVIRONMENT VARIABLES START -- #
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
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 HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
# -- HADOOP ENVIRONMENT VARIABLES END -- #
然後,source $HOME/.bashrc,hadoop version測試一下是否成功

(5)cd 至/usr/local/hadoop/etc/hadoop/,更改一些配置檔案

a.    hadoop-env.sh,新增:

## Update JAVA_HOME variable,
JAVA_HOME=/usr/lib/jvm/jdk1.8.0_77
b.    core-site.xml,在configuration標籤裡新增:
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
c.    hdfs-site.xml
<property>
      <name>dfs.replication</name>
      <value>1</value>
 </property>
 <property>
      <name>dfs.namenode.name.dir</name>
      <value>file:/usr/local/hadoop_tmp/hdfs/namenode</value>
 </property>
 <property>
      <name>dfs.datanode.data.dir</name>
      <value>file:/usr/local/hadoop_tmp/hdfs/datanode</value>
 </property>
d.    yarn-site.xml
<property>
      <name>yarn.nodemanager.aux-services</name>
      <value>mapreduce_shuffle</value>
</property>
<property>
      <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
      <value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
e.    cp mapred-site.xml.template mapred-site.xml,sudo gedit mapred-site.xml
<property>
      <name>mapreduce.framework.name</name>
      <value>yarn</value>
</property>
(6)規範namenode格式

hdfs namenode -format

(7)執行hadoop,分別執行start-dfs.sh和start-yarn.sh會看到一些輸出資訊

(8)執行jps,如果輸出顯示如下:

2004 DataNode
2409 NodeManager
1914 NameNode
2442 Jps
2171 SecondaryNameNode
2317 ResourceManager
說明hadoop配置成功,有時會出現沒有datanode或者namenode的情況,這時刪掉hadoop_tmp,然後新建,與之前步驟一樣,再format,重新執行就可以了。另外,停止hadoop執行stop-dfs.sh和stop-yarn.sh即可。