1. 程式人生 > >hadoop3叢集搭建詳解(自身總結)

hadoop3叢集搭建詳解(自身總結)

hadoop3

確定叢集所需要的機器 ,我由於機器限制 只有三臺機器,一般的資料節點至少要有三個副本 由於機器限制我這裡就用了兩個副本了(我這裡hadoop01是主節點)

hadoop01
hadoop02
hadoop03
三臺伺服器

伺服器環境搭建

hadoop3 需要的java環境必須在1.8 以上
hadoop3.0.0.1.tar.gz 專案檔案下載
解壓

解壓後需要多件幾個資料夾

在解壓後的資料夾裡面新建一個臨時資料夾 hadooptemp
新建一個 日誌資料夾 logs
新建一個hdfs資料夾 裡面對應新建 data 和name 兩個資料夾資料資料夾和名稱檔案
這是基本要設定的

檔案同步指令碼rsynch

#!/bin/bash
pcount=$#
if((pcount<1));then
        echo 'no args';
        exit;
fi
p1=$1;
fname=`basename $p1`
pdir=`cd -P $(dirname $p1); pwd`
echo $pdir
cuser=`whoami`
#echo $cuser
for((host=2;host<4;host=host+1));do
	echo ---------------------hadoop0$host---------------------
	rsync -rvl $pdir/$fname 
[email protected]
$host:$pdir done

命令同步指令碼 xcall

#!/bin/bash
pcount=$#
if((pcount<1));then
        echo 'no args';
        exit;
fi
[email protected]
for((host=2;host<4;host=host+1));do
	echo ---------------------hadoop0$host---------------------
	ssh hadoop0$host [email protected]
done

修改hosts 檔案並同步其他伺服器

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.40.154 hadoop01
192.168.40.159 hadoop02
192.168.40.160 hadoop03

修改對應機器的hostname

vim /etc/hostname 

配置免祕鑰登入

首先看看你的伺服器是否有ssh服務,沒有的話就先安裝 (在根目錄下是否有.ssh 資料夾)

yum install ssh

1)檢視埠號:netstat –lnt
確認埠為預設的22埠。
(2)生成祕鑰對:ssh-keygen –t rsa(出現提示一直預設)
(3)複製公鑰到其他2個機器。
命令:ssh-copy-id -i id_rsa.pub [email protected]
這裡要輸入,yes 然後輸密碼
ssh-copy-id 指令碼做了兩件事:1、將祕鑰拷貝到了目的伺服器,並建立了.ssh目錄,2、又將id_rsa.pub檔案更改名字為:authorized_keys,並保持檔案許可權屬性不變。
測試:

ssh [email protected] ls -l  ~

配置檔案配置

bash_profile中配置
HADOOP_HOME和HADOOP_OPTS(這個是一些java 執行時的額外的jar包)
配置檔案

hadoop.env.shJAVA_HOME是否配置了
export JAVA_HOME="/usr/local/java/jdk1.8.0_144"

core-site.xml

<property>
  <name>fs.defaultFS</name>
  <value>hdfs://hadoop01:9000/</value>
  <description>The name of the default file system.  A URI whose
  scheme and authority determine the FileSystem implementation.  The
  uri's scheme determines the config property (fs.SCHEME.impl) naming
  the FileSystem implementation class.  The uri's authority is used to
  determine the host, port, etc. for a filesystem.</description>
</property>
<property>
  <name>hadoop.tmp.dir</name>
  <value>/root/hadoop/hadooptemp</value><!-- 這個是臨時資料夾路徑一定要自己定義-->
  <description>A base for other temporary directories.</description>
</property>

hdfs-site.xml

<property>
  <name>dfs.namenode.secondary.http-address</name>
  <value>hadoop03:9868</value>
  <description>
    The secondary namenode http server address and port.
  </description>
</property>

<property>
  <name>dfs.namenode.secondary.https-address</name>
  <value>hadoop03:9869</value>
  <description>
    The secondary namenode HTTPS server address and port.
  </description>
</property>

        <property>
                <name>dfs.namenode.http-address</name>
                <value>hadoop01:50070</value>
        </property>

<property>
<name>dfs.namenode.name.dir</name>
 <value>/root/hadoop/hadoop3/hdfs/name</value>
</property>
 <property>
  <name>dfs.datanode.data.dir</name>
  <value>/root/hadoop/hadoop3/hdfs/data</value>
 </property>
 <property>
  <name>dfs.replication</name>
  <value>2</value>
 </property>

<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.permissions.enabled</name>
<value>false</value>
</property>

mapred-site.xml

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

yarn-site.xml

<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>

workers檔案中寫資料節點的機器的hostname

hadoop02
hadoop03
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root

然後就可以吧這個hadoop3對應的資料夾分發到各個伺服器了

然後應該就可以順利啟動了
出現什麼問題就可以在logs日誌裡面看