Hadoop 完全分布式部署

时间:2023-03-10 00:34:54
Hadoop 完全分布式部署

完全分布式部署Hadoop

分析:

1)准备3台客户机(关闭防火墙、静态ip、主机名称)

2)安装jdk

3)配置环境变量

4)安装hadoop

5)配置环境变量

6)安装ssh

7)集群时间同步

7)配置集群

8)启动测试集群

  1. 1.      虚拟机准备

准备三台装有Centos系统的虚拟机,可以参考https://www.cnblogs.com/Transkai/p/10404127.html

然后对静态ip进行配置,可以参考  https://www.cnblogs.com/Transkai/p/10404253.html

  1. 2.      主机名设置

0)查看主机名基本语法:

[root@hadoop-001 /]#hostname

1)修改linux的hosts文件

(1)进入Linux系统查看本机的主机名。通过hostname命令查看

[root@hadoop ~]# hostname

hadoop-001

(2)如果感觉此主机名不合适,我们可以进行修改。通过编辑/etc/sysconfig/network文件

[root@hadoop-001 /]# vi /etc/sysconfig/network

文件中内容

NETWORKING=yes

NETWORKING_IPV6=no

HOSTNAME= hadoop-001

注意:主机名称不要有“_”下划线

(3)打开此文件后,可以看到主机名。修改此主机名为我们想要修改的主机名hadoop-001。

(4)保存退出。

(5)打开/etc/hosts

[root@hadoop-001 /]# vim /etc/hosts

添加如下内容

192.168.137.188  hadoop001

(6)并重启设备,重启后,查看主机名,已经修改成功

2)修改window10的hosts文件

(1)进入C:\Windows\System32\drivers\etc路径

(2)打开hosts文件并添加如下内容

192.168.137.188 hadoop-001

并按以上步骤配置好hadoop-002,hadoop-003

  1. 3.      安装jdk,Hadoop,配置环境变量

配置jdk文件

1、解压jdk软件

jdk-8u161-linux-x64.tar.gz

1、配置环境变量

export JAVA_HOME=/home/hadoop/bigdatasoftware/jdk1.8.0_161

PATH=$PATH:$JAVA_HOME/bin

配置hadoop(本地模式)

1、解压hadoop软件

tar -zxvf hadoop-2.7.2.tar.gz

2、配置hadoop的环境变量

a、vi ~/.bash_profile

添加以下内容:

export HADOOP_HOME=/home/hadoop/bigdatasoftware/hadoop-2.7.2

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

b、source ~/.bash_profile

3、hadoop version

Hadoop 2.7.2

 

 

  1. 4.      SSH无密码登录

 

(1)进入到我的home目录

cd  ~/.ssh

(2)生成公钥和私钥:

ssh-keygen -t rsa

然后敲(三个回车),就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)

(3)将公钥拷贝到要免密登录的目标机器上

ssh-copy-id 192.168.1.102

.ssh文件夹下的文件功能解释

(1)~/.ssh/known_hosts   :记录ssh访问过计算机的公钥(public key)

(2)id_rsa    :生成的私钥

(3)id_rsa.pub    :生成的公钥

(4)authorized_keys  :存放授权过得无秘登录服务器公钥

 

  1. 5.     配置集群

1)集群部署规划

hadoop-001

hadoop-002

hadoop-003

HDFS

NameNode

DataNode

DataNode

SecondaryNameNode

DataNode

YARN

NodeManager

ResourceManager

NodeManager

NodeManager

2)配置文件

(1)core-site.xml

<!-- 指定HDFS中NameNode的地址 -->

<property>

<name>fs.defaultFS</name>

<value>hdfs:// hadoop-001:9000</value>

</property>

<!-- 指定hadoop运行时产生文件的存储目录 -->

<property>

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

<value>/opt/module/hadoop-2.7.2/data/tmp</value>

</property>

(2)Hdfs

hadoop-env.sh

export JAVA_HOME=/opt/module/jdk1.7.0_79

hdfs-site.xml

<configuration>

<property>

<name>dfs.replication</name>

<value>3</value>

</property>

<property>

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

<value> hadoop-003:50090</value>

</property>

</configuration>

slaves

hadoop-001

hadoop-002

hadoop-003

(3)yarn

yarn-env.sh

export JAVA_HOME=/opt/module/jdk1.7.0_79

yarn-site.xml

<configuration>

<!-- Site specific YARN configuration properties -->

<!-- reducer获取数据的方式 -->

<property>

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

<value>mapreduce_shuffle</value>

</property>

<!-- 指定YARN的ResourceManager的地址 -->

<property>

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

<value>Hadoop-002</value>

</property>

</configuration>

(4)mapreduce

mapred-env.sh

export JAVA_HOME=/opt/module/jdk1.7.0_79

mapred-site.xml

<configuration>

<!-- 指定mr运行在yarn上 -->

<property>

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

<value>yarn</value>

</property>

</configuration>

 

6.scp指令

 

1)scp可以实现服务器与服务器之间的数据拷贝。

2)案例实操

(1)将hadoop-001中/home/hadoop文件拷贝到hadoop-002、hadoop-003上。

[hadoop@hadoop-001 /]# scp -r /home/hadoop/bigdatasoftware  hadoop@hadoop-002:/home/hadoop/

[hadoop@hadoop-001 /]# scp -r /home/hadoop/bigdatasoftware  hadoop@hadoop-003:/home/hadoop/

(2)将192.168.1.102服务器上的文件拷贝到当前用户下。

[root@hadoop101 opt]# scp  root@hadoop102:/etc/profile  /opt/tmp/

(3)实现两台远程机器之间的文件传输(hadoop103主机文件拷贝到hadoop104主机上)

[hadoop@hadoop102 test]$ scp hadoop@hadoop103:/opt/test/haha hadoop@hadoop104:/opt/test/

 

7.集群启动及测试

 

1)启动集群

(0)如果集群是第一次启动,需要格式化namenode

[root@hadoop-001hadoop-2.7.2]# bin/hdfs namenode -format

(1)启动HDFS:

[root@hadoop-001 hadoop-2.7.2]# sbin/start-dfs.sh

[root@hadoop-001 hadoop-2.7.2]# jps

4166 NameNode

4482 Jps

4263 DataNode

[root@hadoop-002 桌面]# jps

3218 DataNode

3288 Jps

[root@hadoop-003 桌面]# jps

3221 DataNode

3283 SecondaryNameNode

3364 Jps

(2)启动yarn

sbin/start-yarn.sh

注意:Namenode和ResourceManger如果不是同一台机器,不能在NameNode上启动 yarn,应该在ResouceManager所在的机器上启动yarn。

2)集群基本测试

(1)上传文件到集群

上传小文件

bin/hdfs dfs -mkdir -p /home/hadoop/tmp/conf

bin/hdfs dfs -put etc/hadoop/*-site.xml /home/hadoop/tmp/conf

上传大文件

[hadoop@hadoop-001 hadoop-2.7.2]$ bin/hadoop fs -put /opt/software/hadoop-2.7.2.tar.gz  /user/hadoop/input

(2)上传文件后查看文件存放在什么位置

文件存储路径

[hadoop@hadoop102 subdir0]$ pwd

/opt/module/hadoop-2.7.2/data/tmp/dfs/data/current/BP-938951106-192.168.10.107-1495462844069/current/finalized/subdir0/subdir0

查看文件内容

[hadoop@hadoop102 subdir0]$ cat blk_1073741825

hadoop

hadoop

hadoop

(3)拼接

-rw-rw-r--. 1 hadoop hadoop 134217728 5月  23 16:01 blk_1073741836

-rw-rw-r--. 1 hadoop hadoop   1048583 5月  23 16:01 blk_1073741836_1012.meta

-rw-rw-r--. 1 hadoop hadoop  63439959 5月  23 16:01 blk_1073741837

-rw-rw-r--. 1 hadoop hadoop    495635 5月  23 16:01 blk_1073741837_1013.meta

[hadoop@hadoop102 subdir0]$ cat blk_1073741836>>tmp.file

[hadoop@hadoop102 subdir0]$ cat blk_1073741837>>tmp.file

[hadoop@hadoop102 subdir0]$ tar -zxvf tmp.file

(4)下载

[hadoop@hadoop102 hadoop-2.7.2]$ bin/hadoop fs -get /user/hadoop/input/hadoop-2.7.2.tar.gz

3)性能测试集群

写海量数据

读海量数据

7集群时间同步

时间同步的方式:找一个机器,作为时间服务器,所有的机器与这台集群时间进行定时的同步,比如,每日十分钟,同步一次时间。

配置时间同步:

1)时间服务器配置

(1)检查ntp是否安装

[root@hadoop102 桌面]# rpm -qa|grep ntp

ntp-4.2.6p5-10.el6.centos.x86_64

fontpackages-filesystem-1.41-1.1.el6.noarch

ntpdate-4.2.6p5-10.el6.centos.x86_64

(2)修改ntp配置文件

vi /etc/ntp.conf

修改内容如下

a)修改1

#restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap为

restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap

b)修改2

server 0.centos.pool.ntp.org iburst

server 1.centos.pool.ntp.org iburst

server 2.centos.pool.ntp.org iburst

server 3.centos.pool.ntp.org iburst为

#server 0.centos.pool.ntp.org iburst

#server 1.centos.pool.ntp.org iburst

#server 2.centos.pool.ntp.org iburst

#server 3.centos.pool.ntp.org iburst

c)添加3

server 127.127.1.0

fudge 127.127.1.0 stratum 10

3)修改/etc/sysconfig/ntpd 文件

vim /etc/sysconfig/ntpd

增加内容如下

SYNC_HWCLOCK=yes

4)重新启动ntpd

[root@hadoop102 桌面]# service ntpd status

ntpd 已停

[root@hadoop102 桌面]# service ntpd start

正在启动 ntpd:                                            [确定]

5)执行:

chkconfig ntpd on

2)其他机器配置(必须root用户)

(1)在其他机器配置10分钟与时间服务器同步一次

[root@hadoop103 hadoop-2.7.2]# crontab -e

编写脚本

*/10 * * * * /usr/sbin/ntpdate hadoop102

(2)修改任意机器时间

date -s "2019-2-26"

(3)十分钟后查看机器是否与时间服务器同步

date