1. 程式人生 > >hadoop搭建(完全分散式)

hadoop搭建(完全分散式)

連結:https://pan.baidu.com/s/1F7Ke7RHBjYCz3ISKuGPRTQ

提取碼:y7t2

本教程由centos7加hadoop2.7.5加jdk1.7構成:
一、網路檔案設定 (涉及ifcfg-ens33、hostname、hosts)

 

克隆三個虛擬機器分別命名為 master   slave1   slave2

 

修改網絡卡配置檔案:gedit /etc/sysconfig/network-scripts/ifcfg-ens33

 

然後分別修改:

master:

#新增以下內容  為虛擬機器ip配置,可自定義

IPADDR=192.168.11.111

NETMASK=255.255.255.0

GATEWAY=192.168.11.1

#修改為靜態ip

BOOTPROTO=static

#設定網絡卡自動開啟

ONBOOT=yes

#如果沒有MAC地址,則新增

HWADDR=本機mac地址(通過ifconfig檢視)

 

如此  slave1和slave2這樣操作  分別配置為192.168.11.112  192.168.11.113

 

 

修改網路名檔案: gedit  /etc/hostname

刪掉原來的內容  分別修改為  master  slave1  slave2

修改域名解析檔案:  gedit  /etc/hosts

#新增

master   192.168.11.111

slave1    192.168.11.112

slave2    192.168.11.113

(三個檔案同時這樣新增)

 

最後 重啟網絡卡  systemctl restart network

二、配置ssh免密登入

分別在三臺電腦上建立新使用者 hadoop,並修改密碼

useradd hadoop

passwd hadoop

 

然後配置sudo檔案,讓他們可以使用sudo命令

visudo

#找到root ALL=(ALL) ALL這一行,在下面新增

Hadoop ALL=(ALL)  ALL

#順便把這一行的#號去掉。去掉了就不用管了

#%wheel  ALL=(ALL)       ALL

 

Centos7預設整合著ssh服務

保證由master主機能夠免密碼登入到slave節點上

# master 生成公鑰(三臺都要配置)

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa

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

chmod 600 ~/.ssh/authorized_keys

複製 master 公鑰到 slave節點

# 複製 master 主機公鑰到 slave節點的 /tmp 目錄

scp  ~/.ssh/id_rsa.pub [email protected]:/tmp/authorized_keys

 

scp  ~/.ssh/id_rsa.pub [email protected]:/tmp/authorized_keys

追加 /tmp/authorized_keys 到 ~/.ssh/authorized_keys

cat /tmp/authorized_keys >>  ~/.ssh/authorized_keys

注意:

1) .ssh目錄的許可權必須是700

2) .ssh/authorized_keys檔案許可權必須是600

 

三、配置基礎環境

基礎環境包括java環境和hadoop基礎配置,從百度雲連線上提取jdk和hadoop原始碼,通過tools,共享資料夾,u盤傳輸等方式,拷貝到虛擬機器內。

配置java環境

cd /usr

mkdir lo

cd lo

mkdir java

mkdir hadoop

cd 桌面

sudo tar -zxvf jdk-1.7.tar.gz -C /usr/lo/

sudo tar -zxvf hadoop-2.7.5.tar.gz -C /usr/lo/

cd /usr/lojdk1.7.0_80

pwd    #這個是java環境的工作路徑

cd /usr/lo/hadoop-2.7.5

pwd  #這個是hadoop的工作路徑

cd /usr

sudo chown hadoop -R lo

#到目前為止,解壓完成,以下開始配置環境

sudo gedit /etc/profile

#修改JAVA_HOME為當前工作路徑

export JAVA_HOME=(pwd時輸出的路徑)

#然後新增

export HADOOP_HOME=(pwd時輸出的路徑)

export HADOOP_INSTALL=$HADOOP_HOME

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

#在PATH裡面加上hadoop的路徑

export PATH=$JAVA_HOME/bin:$HADOOP_HOME/sbin:$HADOOP_HOME/bin:$PATH

#儲存並關閉

重新整理檔案

source /etc/profile

java -version

hadoop

執行這兩條命令時,出現這個,代表配置成功

 

 

 

接下來開始配置hadoop四檔案:這四個檔案都在hadoop安裝目錄下的etc/hadoop
第一個檔案 core-site.xml:

 

<configuration>

  <!--指定namenode的地址-->

    <property>

            <name>fs.defaultFS</name>

            <value>hdfs://master:9000</value>

    </property>

  <!--用來指定使用hadoop時產生檔案的存放目錄-->

    <property>

            <name>hadoop.tmp.dir</name>

            <value>/usr/lo/tmp</value>

    </property>

</configuration>

第二個檔案hdfs-site.xml:

 

<configuration>

  <!--指定hdfs儲存資料的副本數量-->

    <property>

            <name>dfs.replication</name>

            <value>2</value>

</property>

 <!--指定SecondayNameNode的埠號-->

    <property>

            <name>dfs.namenode.secondary.http-address</name>

            <value>Master:50090</value>

    </property>

  <!--指定hdfs中namenode的儲存位置-->

    <property>

            <name>dfs.namenode.name.dir</name>

            <value>/usr/lo/tmp/name</value>

    </property>

  <!--指定hdfs中datanode的儲存位置-->

    <property>

            <name>dfs.datanode.data.dir</name>

            <value>/usr/lo/tmp/data</value>

    </property>

</configuration>

第三個檔案mapred-site.xml

 

<configuration>

  <!--告訴hadoop以後MR(Map/Reduce)執行在YARN上-->

    <property>

            <name>mapreduce.framework.name</name>

            <value>yarn</value>

     </property>

  <!--配置MapReduce歷史伺服器-->

     <property>

            <name>mapreduce.jobhistory.address</name>

            <value>Master:10020</value>

     </property>

     <property>

            <name>mapreduce.jobhistory.webapp.address</name>

            <value>Master:19888</value>

     </property>

</configuration>

第四個檔案yarn-site.xml

 

<configuration>

  <!--nomenodeManager獲取資料的方式是shuffle-->

    <property>

            <name>yarn.nodemanager.aux-services</name>

            <value>mapreduce_shuffle</value>

    </property>

  <!--指定Yarn的老大(ResourceManager)的地址-->     

    <property>

            <name>yarn.resourcemanager.hostname</name>

            <value>master</value>

    </property>        

<configuration>

 

然後修改  hadoop-env.sh

把裡面的JAVA_HOME 修改成profile中的JAVA_HOME路徑。

接著修改  slaves

把 192.168.11.112  192.168.11.113 新增到裡面

 

然後  把整個配置好的hadoop目錄和java目錄打包,發給其他slave節點機

cd /usr

tar -zcvf lo.tar.gz lo

 

傳送

(這裡需要提前在兩個子節點建立屬主為hadoop使用者的檔案例如/usr/tmp1)

scp /usr/lo.tar.gz [email protected]:/usr/tmp1

scp /usr/lo.tar.gz [email protected]:/usr/tmp1

 

持一致格式化檔案系統

hdfs namenode -format

啟動檔案服務

start-dfs.sh

start-yarn.sh

 

 

 

Hadoop出現錯誤:WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable,解決方案

在hadoop—env.sh中  新增export HADOOP_OPTS="-Djava.library.path=${HADOOP_HOME}/lib/native"