centos7搭建hadoop2.10僞分佈模式

1.準備一臺Vmware虛擬機,添加hdfs用戶及用戶組,配置網絡見 http://www.javashuo.com/article/p-finapdck-ku.htmlhtml

在root用戶下node

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

adduser hdfs
passwd hdfs

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

usermod -a -G hdfs hdfs

前面一個hdfs是組名,後面一個hdfs是用戶名瀏覽器

驗證用戶和用戶組:服務器

cat /etc/group

會看到   hdfs:x:1001:hdfs網絡

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

vim /etc/sudoers

oop

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
相關文章
相關標籤/搜索