HDFS 分散式環境搭建

2022-09-07 06:04:13

HDFS 分散式環境搭建

作者:Grey

原文地址:

部落格園:HDFS 分散式環境搭建

CSDN:HDFS 分散式環境搭建

準備四個Linux範例

每個範例對應的 host 和 ip 地址如下

node01 192.168.150.128

node02 192.168.150.138

node03 192.168.150.139

node04 192.168.150.140

每個節點的安排如下

host NN SNN DN
node01
node02
node03
node04

首先,需要設定靜態 ip,

node01~node04上,分別執行

vi /etc/sysconfig/network-scripts/ifcfg-ens33

內容參考如下內容修改

在 node01 上

修改BOOTPROTO="static"

新增IPADDR="192.168.150.128"

然後執行:

service network restart

在 node02 上

修改BOOTPROTO="static"

新增IPADDR="192.168.150.138"

然後執行

service network restart

在 node03 上

修改BOOTPROTO="static"

新增IPADDR="192.168.150.139"

然後執行

service network restart

在 node04 上

修改BOOTPROTO="static"

新增IPADDR="192.168.150.140"

然後執行

service network restart

接下來,設定 hostname

在 node01 上

執行hostnamectl set-hostname node01

執行

vi /etc/sysconfig/network

設定為

NETWORKING=yes
HOSTNAME=node01

在 node02 上

執行hostnamectl set-hostname node02

執行

vi /etc/sysconfig/network

設定為

NETWORKING=yes
HOSTNAME=node02

在 node03 上

執行hostnamectl set-hostname node03

執行

vi /etc/sysconfig/network

設定為

NETWORKING=yes
HOSTNAME=node03

在 node04 上

執行hostnamectl set-hostname node04

執行

vi /etc/sysconfig/network

設定為

NETWORKING=yes
HOSTNAME=node01

設定本機的ip到主機名的對映關係,在node01~node04上分別執行vi /etc/hosts

並新增如下資訊:

192.168.150.128 node01 

192.168.150.138 node02 

192.168.150.139 node03 

192.168.150.140 node04 

接下來,需要關閉防火牆

node01~node04上都執行如下命令

systemctl stop firewalld.service

systemctl disable firewalld.service

firewall-cmd --reload

service iptables stop

chkconfig iptables off

關閉 SELINUX

node01~node04上執行vi /etc/selinux/config, 設定如下選項

SELINUX=disabled

做時間同步

node01~node04上分別執行yum install ntp -y

且做如下設定

vi /etc/ntp.conf 

新增如下資訊

server ntp1.aliyun.com

然後在node01~node04上都執行如下命令

service ntpd start

chkconfig ntpd on

接下來是設定免密登入

node01~node04上分別執行

ssh localhost

輸入yes

輸入密碼

node01~node04上執行如下命令生成本機的金鑰和公鑰ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa

node01的公鑰傳送到另外三個機器,在node01上執行

scp ~/.ssh/id_dsa.pub root@node02:~/.ssh/node1.id_rsa.pub

scp ~/.ssh/id_dsa.pub root@node03:~/.ssh/node1.id_rsa.pub

scp ~/.ssh/id_dsa.pub root@node04:~/.ssh/node1.id_rsa.pub

node02的公鑰傳送到另外三個機器,在node02上執行

scp ~/.ssh/id_dsa.pub root@node01:~/.ssh/node2.id_rsa.pub

scp ~/.ssh/id_dsa.pub root@node03:~/.ssh/node2.id_rsa.pub

scp ~/.ssh/id_dsa.pub root@node04:~/.ssh/node2.id_rsa.pub

node03的公鑰傳送到另外三個機器,在node03上執行

scp ~/.ssh/id_dsa.pub root@node01:~/.ssh/node3.id_rsa.pub

scp ~/.ssh/id_dsa.pub root@node02:~/.ssh/node3.id_rsa.pub

scp ~/.ssh/id_dsa.pub root@node04:~/.ssh/node3.id_rsa.pub

node04的公鑰傳送到另外三個機器,在node04上執行

scp ~/.ssh/id_dsa.pub root@node01:~/.ssh/node4.id_rsa.pub

scp ~/.ssh/id_dsa.pub root@node02:~/.ssh/node4.id_rsa.pub

scp ~/.ssh/id_dsa.pub root@node03:~/.ssh/node4.id_rsa.pub

node01上執行

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

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

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

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

node02上執行

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

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

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

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

node03上執行

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

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

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

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

node04上執行

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

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

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

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

接下來,需要在node01~node04上都安裝Java環境,安裝過程略。

node01~node04上都建立好目錄

mkdir -p /opt/bigdata

node01~node04上,將hadoop安裝包上傳到/opt/bigdata下,然後執行:

tar xf hadoop-2.6.5.tar.gz

然後執行:

mv hadoop-2.6.5 hadoop

新增環境變數vi /etc/profile

Hadoop加入環境變數:

export JAVA_HOME=/usr/local/jdk

export HADOOP_HOME=/opt/bigdata/hadoop

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

然後執行source /etc/profile

接下來是 Hadoop 設定,在node01~node04

執行vi $HADOOP_HOME/etc/hadoop/hadoop-env.sh

設定 JAVA_HOME:export JAVA_HOME=/usr/local/jdk

node01~node04上執行vi $HADOOP_HOME/etc/hadoop/core-site.xml

<configuration></configuration>之間,加入如下設定:

<property>
 <name>fs.defaultFS</name>
 <value>hdfs://node01:9000</value>
</property>

node01~node04上執行vi $HADOOP_HOME/etc/hadoop/hdfs-site.xml

<configuration></configuration>之間,加入如下設定

<property>
    <name>dfs.replication</name>
    <value>2</value>
</property>
<property>
    <name>dfs.namenode.name.dir</name>
    <value>/var/bigdata/hadoop/full/dfs/name</value>
</property>

<property>
    <name>dfs.datanode.data.dir</name>
    <value>/var/bigdata/hadoop/full/dfs/data</value>
</property>

<property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>node02:50090</value>
</property>

<property>
    <name>dfs.namenode.checkpoint.dir</name>
    <value>/var/bigdata/hadoop/full/dfs/secondary</value>
</property>

node01~node04上執行vi $HADOOP_HOME/etc/hadoop/slaves

node02
node03
node04

node01上格式化啟動

格式化hdfs namenode -format

啟動start-dfs.sh

如果使用 Windows作為使用者端,那麼可以設定 hosts 條目

進入C:\Windows\System32\drivers\etc

host 檔案中增加如下條目:

192.168.150.128 node01 

192.168.150.138 node02 

192.168.150.139 node03 

192.168.150.140 node04

測試一下

node01上,執行如下命令,

hdfs dfs -mkdir /bigdata

hdfs dfs -mkdir -p /user/root

hdfs dfs -put hadoop-2.6.5.tar.gz /user/root

開啟瀏覽器

通過:

http://node01:50070/explorer.html

可以看到上傳的檔案 hadoop-2.6.5.tar.gz