centos7搭建hadoop2.10偽分布模式


1.准備一台Vmware虛擬機,添加hdfs用戶及用戶組,配置網絡見 https://www.cnblogs.com/qixing/p/11396835.html

在root用戶下

添加hdfs用戶,並設置密碼:

adduser hdfs
passwd hdfs

將hdfs用戶添加到hdfs用戶組中

usermod -a -G hdfs hdfs

前面一個hdfs是組名,后面一個hdfs是用戶名

驗證用戶和用戶組:

cat /etc/group

會看到   hdfs:x:1001:hdfs

將hdfs用戶賦予root權限,在sudoers文件中添加hdfs用戶並賦予權限

vim /etc/sudoers

root  ALL=(ALL)  ALL  

下面添加:

hdfs  ALL=(ALL)  ALL

保存編輯后,hdfs就擁有root權限

 

本人習慣將軟件安裝到/opt/soft文件夾下

在/opt/下創建soft文件夾,並改為hdfs用戶擁有

cd /opt
mkdir soft
chown -R hdfs:hdfs soft

 

2.安裝jdk,配置環境變量

將jdk安裝包解壓到 /opt/soft/ 下

tar -zxvf jdk-8u231-linux-x64.tar.gz -C /opt/soft/

在/opt/soft/下就會出現jdk加壓文件夾 jdk1.8.0_231 文件夾 帶有jdk版本號,但是一般我們使用jdk時帶着版本號不太方便,也為以后升級能夠改動更小,一般我們會給jdk創建一個軟連接,這樣我們只要配置軟連接名字,或者升級時,將軟連接指向新jdk就可以了

ln -s  jdk1.8.0_231 jdk

這樣我們就給jdk1.8.0_231創建一個jdk軟連接,我們只使用jdk軟連接就可以了

 給jdk配置環境變量

vim /etc/profile
添加
# jdk
export JAVA_HOME=/opt/soft/jdk
export PATH=$PATH:$JAVA_HOME/bin

重新編譯profile文件

source /etc/profile

3.安裝hadoop2.10.0

將hadoop2.10.0安裝包解壓到/opt/soft目錄下

tar -zxvf hadoop-2.10.0.tar.gz -C /opt/soft/

創建hadoop軟鏈接

ln -s hadoop-2.10.0 hadoop

配置hadoop環境變量

vim /etc/profile
添加
# hadoop
export HADOOP_HOME=/opt/soft/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

重新編譯profile文件

source /etc/profile

驗證hadoop安裝是否成功:

hadoop version

  安裝成功

 

 配置hadoop偽分布:

配置hadoop配置文件core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml

core-site.xml

   <property>
    <name>fs.defaultFS</name>
    <value>hdfs://localhost/</value>
   </property>

hdfs-site.xml

   <property>
    <name>dfs.replication</name>
    <value>1</value>
   </property>

mapred-site.xml

   <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
   </property>

yarn-site.xml

   <property>
    <name>yarn.resourcemanager.hostname</name>
    <value>localhost</value>
   </property>
   <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
   </property>

4.hadoop在使用時會使用ssh免密登錄,我們就需要配置ssh免密登錄

1)檢查是否安裝了ssh相關軟件包(openssh-server + openssh-clients + openssh)
$>  yum list installed | grep ssh

2)檢查是否啟動了sshd進程
$>  ps -Af | grep sshd

3)在client側生成公私秘鑰對。
$>  ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa

4)生成~/.ssh文件夾,里面有id_rsa(私鑰) + id_rsa.pub(公鑰)

5)追加公鑰到~/.ssh/authorized_keys文件中(文件名、位置固定)
$>  cd ~/.ssh
$>  cat id_rsa.pub >> authorized_keys

6)修改authorized_keys的權限為644.
$>  chmod 644 authorized_keys

7)測試
$>  ssh localhost

5.在hdfs用戶下格式化hadoop

如果是在root用戶下,可以使用su進入hdfs用戶

su - hdfs

格式化hdfs

hadoop namenode -format

 這樣就格式化成功了

 啟動hdfs,啟動命令在hadoop/sbin下的start-all.sh,由於我們已經將sbin加入到PATH中,所有我們現在可以在任何地方執行該命令

start-all.sh

但是hdfs沒有像我們預想的一樣起來,似乎報錯了

 

 hadoop找不到jdk環境變量

這時就需要我們修改hadoop配置文件,手動指定JAVA_HOME環境變量
[${HADOOP_HOME}/etc/hadoop/hadoop-env.sh]
...
export JAVA_HOME=/opt/soft/jdk
...

 

 

 改為

 

 再重新啟動hadoop

start-all.sh

 

 看着似乎是起來了

我們查看一下進程

 

 似乎少了namenode

查看namenode啟動日志,進入到${HADOOP_HOME}/logs下

tail -200f hadoop-hdfs-namenode-localhost.log

 

 namenode 啟動報錯了

Directory /tmp/hadoop-hdfs/dfs/name is in an inconsistent state: storage directory does not exist or is not accessible.?dfs/name文件夾不存在或沒有訪問權限,但是為什么剛裝完時是存在的呢

進入/tmp/hadoop-hdfs/dfs/下看一下,果然沒有name文件夾

 

 於是抱着試試的心理,又重新格式化了hadoop

hadoop namenode -format

再看name文件夾是否存在

 

 這次出來了

再次重啟hdfs

先stop

stop-all.sh

重新啟動

start-all.sh

 

 namenode已經起來了

我們通過瀏覽器驗證一下是否啟動,在瀏覽器中輸入:http://192.168.30.141:50070 ,根據自己的IP修改

 

 

 看到這個頁面說明hadoop偽分布模式已經啟動,如果網頁無法訪問,先看一下服務器的防火牆是否關閉

firewall-cmd --state

 

 我這里已經將防火牆關閉

如果沒有關閉,使用如下命令關閉(需在root用戶下進行,否則沒有權限),再查看網頁是否正常:

停止firewall,這樣在下次重啟機器,會失效

systemctl stop firewalld.service

如果想一直關閉防火牆,請禁止firewall開機啟動

 systemctl disable firewalld .service


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM