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開機啓動