hadoop集群 安装 部署 详解

hadoop集群 安装 部署

软件安装等严格按照目录
Root用户

虚拟机环境准备

克隆三台虚拟机
修改主机名 /etc/sysconfig/network sync然后重启
主机名分别为:hadoop101;hadoop102;hadoop103;
修改克隆虚拟机的静态ip,分别为:
IP分别为:192.168.1.101;192.168.1.102;192.168.1.103
配置主机名和IP的映射关系(便于使用主机名访问虚拟机)

[root@ hadoop101桌面]$ vim /etc/hosts
添加如下内容
192.168.1.101 hadoop101
192.168.1.102 hadoop102
192.168.1.103 hadoop103

修改window7的主机映射文件(hosts文件)
(1)进入C:\Windows\System32\drivers\etc路径
(2)打开hosts文件并添加如下内容

192.168.1.101 hadoop101
192.168.1.102 hadoop102
192.168.1.103 hadoop103

关闭防火墙 service iptables stop;chkconfig iptables off
在各个机器上使用root用户在/opt目录下创建module、software文件夹

安装jdk

1. 卸载现有jdk

(1)查询是否安装java软件:
[root@hadoop101 opt]$ rpm -qa | grep java
(2)如果安装的版本低于1.7,卸载该jdk:
[root@hadoop101 opt]$  rpm -e 软件包

2. 用文件传输工具将jdk导入到opt目录下面的software文件夹下面
3. 在linux系统下的opt目录中查看软件包是否导入成功

[root@hadoop101 opt]$ cd software/
[root@hadoop101 software]$ ls
hadoop-2.7.2.tar.gz  jdk-8u144-linux-x64.tar.gz

4. 解压jdk到/opt/module目录下

[root@hadoop101 software]$ tar -zxvf jdk-8u144-linux-x64.tar.gz -C /opt/module/

5. 配置jdk环境变量
(1)先获取jdk路径:

[root@hadoop101 jdk1.8.0_144]$ pwd
/opt/module/jdk1.8.0_144

(2)打开/etc/profile文件:

[root@hadoop101 software]$  vi /etc/profile
		在profile文件末尾添加jdk路径:
#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_144
export PATH=$PATH:$JAVA_HOME/bin

(3)保存后退出:

:wq

(4)让修改后的文件生效:

[root@hadoop101 jdk1.8.0_144]$ source /etc/profile

6. 测试jdk是否安装成功

[root@hadoop101 jdk1.8.0_144]$ java -version
java version "1.8.0_144"
重启(如果java -version可以用就不用重启)
[root@hadoop101 jdk1.8.0_144]$  reboot

安装Hadoop

Hadoop下载地址:https://archive.apache.org/dist/hadoop/common/hadoop-2.7.2/
1.用文件传输工具工具将hadoop-2.7.2.tar.gz导入到opt目录下面的software文件夹下面
2.进入到Hadoop安装包路径下

[root@hadoop101 ~]$ cd /opt/software/

3.解压安装文件到/opt/module下面

[root@hadoop101 software]$ tar -zxvf hadoop-2.7.2.tar.gz -C /opt/module/

4.查看是否解压成功

[root@hadoop101 software]$ ls /opt/module/
hadoop-2.7.2

5. 将hadoop添加到环境变量

(1)获取hadoop安装路径:
[root@ hadoop101 hadoop-2.7.2]$ pwd
/opt/module/hadoop-2.7.2
(2)打开/etc/profile文件:
[root@ hadoop101 hadoop-2.7.2]$  vi /etc/profile
在profie文件末尾添加jdk路径:(shitf+g)
##HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-2.7.2
export PATH=$PATH:$HADOOP_HOME/bin
(3)保存后退出:
:wq
(4)让修改后的文件生效:
[root@ hadoop101 hadoop-2.7.2]$ source /etc/profile

6. 测试是否安装成功

[root @hadoop101 ~]$ hadoop version
Hadoop 2.7.2

7. 重启(如果hadoop命令不能用再重启)

[root@ hadoop101 hadoop-2.7.2]$  reboot

集群配置

1. 集群部署规划
在这里插入图片描述
2. 配置集群
(1)配置Hadoop所使用Java的环境变量:hadoop-env.sh

[root@hadoop101 hadoop]$ vim hadoop-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_144

(1)核心配置文件:core-site.xml(hdfs的核心配置文件)

[root@hadoop101 hadoop]$ vim core-site.xml
<!-- 指定HDFS中NameNode的地址 -->
	<property>
		<name>fs.defaultFS</name>
        <value>hdfs://hadoop101:9000</value> 
	</property>

	<!-- 指定hadoop运行时产生文件的存储目录 -->
	<property>
		<name>hadoop.tmp.dir</name>
		<value>/opt/module/hadoop-2.7.2/data/tmp</value>
	</property>

(2)hdfs配置文件 hdfs-site.xml

[root@hadoop101 hadoop]$ vim hdfs-site.xml
<!--副本数量-->
	<property>
		<name>dfs.replication</name>
		<value>3</value>
	</property>
<!--secondarynamenode的地址--> 辅助namenode工作
	<property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>hadoop103:50090</value>
    </property>

(3)yarn配置文件yarn-env.sh

[root@hadoop101 hadoop]$ vim yarn-env.sh 
export JAVA_HOME=/opt/module/jdk1.8.0_144

yarn-site.xml

[root@hadoop101 hadoop]$ vim yarn-site.xml
	<!-- reducer获取数据的方式 -->
	<property>
		 <name>yarn.nodemanager.aux-services</name>
		 <value>mapreduce_shuffle</value>
	</property>

	<!-- 指定YARN的ResourceManager的地址 -->
	<property>
		<name>yarn.resourcemanager.hostname</name>
		<value>hadoop102</value>
	</property>

(4)mapreduce配置文件mapred-env.sh,mapred-site.xml

[root@hadoop101 hadoop]$ vim mapred-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_144

[root@hadoop101 hadoop]$ cp mapred-site.xml.template mapred-site.xml
[root@hadoop101 hadoop]$ vim mapred-site.xml
<!-- 指定mr运行在yarn上 -->
<property>
	<name>mapreduce.framework.name</name>
	<value>yarn</value>
</property>

3.配置集群中从节点信息
/opt/module/hadoop-2.7.2/etc/hadoop/slaves

[root@hadoop101 hadoop]$ vim slaves
hadoop101
hadoop102
hadoop103

4.分发文件
1. scp:secure copy 安全拷贝
(1)scp定义:
scp可以实现服务器与服务器之间的数据拷贝。(from server1 to server2)
安装scp命令,这个安装需要每个节点都要安装
yum install -y openssh-server openssh-clients
(2)实操
(a)将hadoop101中/opt/module目录下的软件拷贝到hadoop102上。

[root@hadoop101 /]$ scp -r /opt/module/*  hadoop102:/opt/module

5.查看文件分发情况

[root@hadoop102 hadoop]$ cat /opt/module/hadoop-2.7.2/etc/hadoop/core-site.xml

集群单点启动

(1)如果集群是第一次启动,需要格式化NameNode(格式化只进行一次!!!)

[root@hadoop101 hadoop-2.7.2]$ hadoop namenode -format

(2)在hadoop101上启动NameNode

[root@hadoop101 hadoop-2.7.2]$ sbin/hadoop-daemon.sh start namenode 
[root@hadoop101 hadoop-2.7.2]$ jps
3461 NameNode

(3)在hadoop101、hadoop102、hadoop103上分别启动DataNode

[root@hadoop101 hadoop-2.7.2]$ sbin/hadoop-daemon.sh start datanode
[root@hadoop101 hadoop-2.7.2]$ jps
3461 NameNode
3608 Jps
3561 DataNode
[root@hadoop102 hadoop-2.7.2]$ sbin/hadoop-daemon.sh start datanode
[root@hadoop102 hadoop-2.7.2]$ jps
3190 DataNode
3279 Jps
[root@hadoop103 hadoop-2.7.2]$ sbin/hadoop-daemon.sh start datanode
[root@hadoop103 hadoop-2.7.2]$ jps
3237 Jps
3163 DataNode

SSH无密登录配置

1. 配置ssh
(1)基本语法
ssh 另一台电脑的ip地址
如果提示 command not found,需要安装ssh服务,命令:

yum  install -y openssh-server openssh-clients

(2)ssh连接时出现Host key verification failed的解决方法

[root@hadoop101 opt] $ ssh hadoop102
The authenticity of host 'hadoop102(192.168.1.102)' can't be established.
RSA key fingerprint is cf:1e:de:d7:d0:4c:2d:98:60:b4:fd:ae:b1:2d:ad:06.
Are you sure you want to continue connecting (yes/no)? 
Host key verification failed.

(3)解决方案如下:直接输入yes
2. 无密钥配置
生成公钥和私钥:

[root@hadoop101 .ssh]$ ssh-keygen -t rsa 

然后敲(三个回车),就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)
将公钥拷贝到要免密登录的目标机器上

[root@hadoop101 .ssh]$ ssh-copy-id hadoop101
[root@hadoop101 .ssh]$ ssh-copy-id hadoop102
[root@hadoop101 .ssh]$ ssh-copy-id hadoop103

3. .ssh文件夹下(~/.ssh)的文件功能解释
(1)known_hosts :记录ssh访问过计算机的公钥(public key)
(2)id_rsa :生成的私钥
(3)id_rsa.pub :生成的公钥
(4)authorized_keys :存放授权过得无密登录服务器公钥

集群启动/停止方式

1. 各个服务组件逐一启动/停止(集群某个进程挂掉使用这种方式重启 )
(1)分别启动/停止hdfs组件
hadoop-daemon.sh start|stop namenode|datanode|secondarynamenode
(2)启动/停止yarn
yarn-daemon.sh start|stop resourcemanager|nodemanager
2. 各个模块分开启动/停止(配置ssh是前提)常用
(1)整体启动/停止hdfs(在namenode节点启动
start-dfs.sh
stop-dfs.sh

(2)整体启动/停止yarn (在resourcemanager节点启动
start-yarn.sh
stop-yarn.sh

集群测试

1. 启动集群
(1)如果集群是第一次启动,需要格式化NameNode,如果单点启动的时候已经格式化,就不需要再次进行格式化了!!!

[root@hadoop101 hadoop-2.7.2]$ bin/hdfs namenode -format

(2)启动HDFS:

[root@hadoop101 hadoop-2.7.2]$ sbin/start-dfs.sh
[root@hadoop101 hadoop-2.7.2]$ jps
4166 NameNode
4482 Jps
4263 DataNode
[root@hadoop101 hadoop-2.7.2]$ jps
3218 DataNode
3288 Jps

[root@hadoop101 hadoop-2.7.2]$ jps
3221 DataNode
3283 SecondaryNameNode
3364 Jps

启动成功之后查看hdfs的页面:http://192.168.1.101:50070/
(3)启动yarn

[root@hadoop102 hadoop-2.7.2]$ sbin/start-yarn.sh

注意:NameNode和ResourceManger如果不是同一台机器,不能在NameNode上启动 yarn,应该在ResouceManager所在的机器上启动yarn。如果不在一台机器上,则ResourceManger所在机器也需要配置到其他机器的ssh免密登录
通过jps命令查看进程:
Yarn的web页面查看地址:http://hadoop102:8088/
在这里插入图片描述
(4)web端查看SecondaryNameNode
(a)浏览器中输入:http://hadoop103:50090/status.html
(b)查看SecondaryNameNode信息,如图所示。
在这里插入图片描述
图SecondaryNameNode的web端
2. 集群基本测试
(1)上传文件到集群
上传小文件 file system

[root@hadoop101 hadoop-2.7.2]$ hadoop fs -mkdir -p /user/root/input
[root@hadoop101 hadoop-2.7.2]$ hadoop fs -put wcinput/wc.input /user/root/input

上传大文件

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

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

[root@hadoop101 subdir0]$ pwd
/opt/module/hadoop-2.7.2/data/tmp/dfs/data/current/BP-938951106-192.168.10.101-1495462844069/current/finalized/subdir0/subdir0

查看HDFS在磁盘存储文件内容

[root@hadoop101 subdir0]$ cat blk_1073741825
hadoop yarn
hadoop mapreduce 
root
root

(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

[root@hadoop101 subdir0]$ cat blk_1073741836>>tmp.file
[root@hadoop101 subdir0]$ cat blk_1073741837>>tmp.file
[root@hadoop101 subdir0]$ tar -zxvf tmp.file

(4)下载

[root@hadoop101 hadoop-2.7.2]$ hadoop fs -get
 /user/root/input/hadoop-2.7.2.tar.gz ./

集群时间同步(配置即可)

时间同步的方式:在集群中找一台机器,作为时间服务器,集群中其他机器与这台机器定时的同步时间,比如,每隔十分钟,同步一次时间。
配置时间同步实操:

  1. 时间服务器配置(必须root用户)
    (1)检查ntp是否安装,若没有安装则使用yum install -y ntp进行安装
[root@hadoop101 桌面]# 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配置文件

[root@hadoop101 桌面]# vim /etc/ntp.conf

修改内容如下
a)修改1(授权192.168.1.0网段上的所有机器可以从这台机器上查询和同步时间)
#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 文件

[root@hadoop101 桌面]# vim /etc/sysconfig/ntpd

增加内容如下(让硬件时间与系统时间一起同步)
SYNC_HWCLOCK=yes
(4)重新启动ntpd

[root@hadoop101 桌面]# service ntpd status
ntpd 已停
[root@hadoop101 桌面]# service ntpd start
正在启动 ntpd:                                            [确定]

(5)执行:
[root@hadoop101 桌面]# chkconfig ntpd on
2. 其他机器配置(必须root用户)
(1)在其他机器配置10分钟与时间服务器同步一次

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

编写脚本

*/10 * * * * /usr/sbin/ntpdate hadoop101

(2)修改任意机器时间

[root@hadoop102 root]$ date -s "2017-9-11 11:11:11"

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

[root@hadoop102 root]$ date
发布了41 篇原创文章 · 获赞 59 · 访问量 2778

猜你喜欢

转载自blog.csdn.net/lljazxx/article/details/102964843
今日推荐