栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Hadoop 平台部署 + Centos7 + VMware

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Hadoop 平台部署 + Centos7 + VMware

目录

Hadoop 平台部署步骤

1、前置工作

1.1、需求:

1.2、静态 ip 配置

1.3、关闭防火墙

1.4、配置主机名,编辑 hosts 文件

1.5 配置 SSH 免密登录

1.6、时间同步

1.7 安装配置 jdk

2、正式安装

2.1 、下载Hadoop包

2.2、修改Hadoop的配置文件

2.3、拷贝 Hadoop 文件夹到 slave1 和 slave2

3、配置 Hadoop 系统环境变量

4、启动集群

4.1、格式化

4.2、启动和停止服务

5、页面


Hadoop 平台部署步骤

1、前置工作

1.1、需求:

centos7 操作系统(或 ubuntu 也可以,都是类似的)

一台 master 和两台 slave,master 配置可以好一点,内存分配大一些

虚拟机的网络连接模式使用: NAT 模式

使用 root 用户登录操作系统

1.2、静态 ip 配置

注:每一台机子都要配置

在配置静态ip地址之前,可以先进行网络检测

首先可以检查一下网络连接是否正常,使用 ping 命令

ping www.baidu.com

如果网络没有打开,可以命令

 service network restart

静态ip配置步骤

1、进入网卡配置目录

 cd /etc/sysconfig/network-scripts/

使用ls命令查看网卡名称(如:ifcfg-ens33)

2、使用编辑对应网卡的配置文件

 # 如果没有安装该命令可以使用 yum install vim -y 命令安装一下,或者使用 vi 命令进行编辑
 vim ifcfg-ens33  

首先,输入i进入编辑模式

将配置修改或添加成如下内容:

BOOTPROTO=static # 使用静态IP地址,默认为dhcp

onBOOT=yes #开机启动

IPADDR=192.168.50.10 # 设置的静态IP地址

NETMASK=255.255.255.0 # 子网掩码

GATEWAY=192.168.50.2 # 网关地址 与虚拟网络编辑器中的保持一致

DNS1=233.5.5.5 # DNS服务器

DNS2=180.76.76.76 # 备用的DNS服务器

如果使用的是虚拟机,注意 ip 地址的网段跟宿主机保持一致

按下esc键,再输入:wq保存退出

3、重启网络服务

 service network restart

4、使用ping命令测试一下网络连接是否正常

1.3、关闭防火墙

注:每一台机子都要配置

 # 第一步,关闭防火墙(暂时)
 systemctl stop firewalld
 # 第二步,设置开机禁用防火墙(永久关闭防火墙)
 systemctl disable firewalld
 # 第三步,查看防火墙状态,确认防火墙已关闭
 systemctl status firewalld 

1.4、配置主机名,编辑 hosts 文件

注:每一台机子都要配置

1、修改主机名

 hostnamectl set-hostname master 

重启reboot后生效

2、编辑hosts文件

 vim /etc/hosts

添加以下信息(相当于给对应 ip 地址的主机添加对应的名称)

192.168.50.10 master

192.168.50.20 slave1

192.168.50.30 slave2

三台都添加完后,测试是否能够互相ping通,如 master 下 ping slave1,直接使用命令ping slave1即可,能ping 通说明三台虚拟机之间是互联的。

1.5 配置 SSH 免密登录

注:每一台机子都要配置

1、使用以下命令生成公私钥对(三台都需要生成)

 ssh-keygen -t rsa  # 默认指定的是 rsa 算法,所以也可以没有-t rsa

一路默认直接回车就行

CentOS7 默认使用 RSA 加密算法生成密钥对,生成的公钥和私钥保存在 ~/.ssh 目录下,分别为 id_rsa(私钥)和 id_rsa.pub(公钥)。

2、将公钥拷贝到另外两台机子上的认证文件中

可以利用 ssh-copy-id 命令进行拷贝操作。(推荐使用,方便快捷)

注:还可以使用步骤 3 + 步骤 4 的方法进行拷贝,如果使用过了步骤 2 的方式,可以直接跳过步骤 3 和步骤 4

 # master、slave1、slave2都执行三条命令
 # 注意一定要都执行,比如 master 上也要执行 ssh-copy-id master 命令,否则在启动 Hadoop 的时候会需要手动输入密码
 ssh-copy-id master 
 ssh-copy-id slave1
 ssh-copy-id slave2

3、先将公钥拷贝到另外两台机子上

(执行了步骤 2 可以直接跳过步骤 3 和 4)

 # 将 master 下 ~/.ssh 目录中的 id_rsa.pub 这个文件拷贝到 slave1 和 slave2 的 ~/.ssh 目录中,在 master 上执行如下命令
 scp ~/.ssh/id_rsa.pub slave1:~/.ssh/
 scp ~/.ssh/id_rsa.pub slave2:~/.ssh/
 # 同样 slave1 和 slave2 的公钥也需要拷贝到另外两台机子上,即 slave1 的公钥拷贝到 master 和 slave2 上,slave2 的公钥拷贝到 master 和 slave1 上。

slave1 和 slave2 同样执行1、2两步,即先生成公私钥对,并将自己的公钥拷贝到另外两台机子上

4、再将别的机子的公钥添加到自己的 authorized_keys 授权文件中(三台机子都要执行)

 # 然后在三台机子上都运行以下命令来将公钥导入到 ~/.ssh/authorized_keys 这个文件中(不存在会创建文件)
 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
 # authorized_keys文件中应该包含三台机子的公钥

5、验证免密登录(三台都验证一下,确保没有问题,如果验证失败,可能是文件权限问题,看第6点补充)

对于 master 验证是否可以免密登录 slave1 和 slave2

 ssh slave1
 ssh slave2

对于 slave1 验证是否可以免密登录 master 和 slave2

 ssh master
 ssh slave2

对于 slave2验证是否可以免密登录 master 和 slave1

 ssh master
 ssh slave1

退出使用exit命令

6、补充:设置文件权限(如果文件权限不满足要求无法实现免密登录,默认情况下是满足的)

 # ~/.ssh 权限设置为 700
 # ~/.ssh/authorized_keys 的权限设置为 600,使用 chmod 命令来进行设置
 chmod 600 authorized_keys
 # 注:设置成更高的权限也行

实现原理(不想了解可以不看,跟操作无关):

一、serverA 免密登录 serverB 原理

首先在 serverA 上生成一对秘钥(ssh-keygen) 将公钥拷贝到 serverB,重命名 authorized_keys serverA 向 serverB 发送一个连接请求,信息包括用户名、ip serverB 接到请求,会从 authorized_keys 中查找,是否有相同的用户名、ip,如果有 serverB 会随机生成一个字符串 然后使用使用公钥进行加密,再发送个 serverA serverA 接到 serverB 发来的信息后,会使用私钥进行解密,然后将解密后的字符串发送给 serverB serverB 接到 serverA 发来的信息后,会给先前生成的字符串进行比对,如果一直,则允许免密登录

参考博客:Centos7 通过SSH使用密钥实现免密登录_好记性不如烂笔头-CSDN博客_centos 免密登录

1.6、时间同步

如果三台机子之间时间不同步,需要进行时间同步的配置

 # 自动定时同步
 crontab -e # 进入到可以使用vi编辑的画面
 # 输入
 0 1 * * * /usr/sbin/ntpdate cn.poolntp.org
 # 分 时 日 月 周 命令 参数
 # 意义 :每小时都会从 cn.poolntp.org 上获取时间并更新
 ​
 # 手动同步(一次性)
 /usr/sbin/ntpdate cn.poolntp.org

1.7 安装配置 jdk

注:每一台机子都要配置

1、下载

jdk 包:jdk-8u211-linux-x64.tar.gz

2、上传到机子上

3、解压

 # -C 后面加上文件解压后保存的目标路径,不加默认保存在当前目录下
 tar -xzvf jdk-8u211-linux-x64.tar.gz -C 目标路径
 # 可以在每一台机子上执行相同的操作或者在一台机子上解压后使用 scp -r 命令 将 jdk 解压后的文件夹拷贝到另外两台机子上
 scp -r /root/jdk1.8.0_211 slave1:/root/

4、配置 jdk 环境变量

编辑配置文件 /etc/profile

 vim /etc/profile 

在末尾添加如下配置

 # java environment
 # JAVA_HOME 的路径是实际解压后的 JDK 的路径
 export JAVA_HOME=/root/jdk1.8.0_211
 export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
 export PATH=$PATH:$JAVA_HOME/bin

保存退出,并执行

 source /etc/profile

使配置生效,然后测试是否成功

 java -version

2、正式安装

注:后续的操作只需要在 master 上完成

2.1 、下载Hadoop包

先下载 hadoop 包:hadoop-2.7.7.tar.gz

下载地址:Index of /dist/hadoop/common

再上传到 master

然后解压

 # -C 后面加上文件解压后保存的目标路径,不加默认保存在当前目录下
 tar -xzvf hadoop-2.7.7.tar.gz -C 目标路径

2.2、修改Hadoop的配置文件

首先,进入 hadoop-2.7.7/etc/hadoop 文件夹下

1、修改 hadoop-env.sh、yarn-env.sh 中的 JAVA_HOME

 export JAVA_HOME=/root/jdk1.8.0_211 # 根据自己的jdk目录配置

2、配置 core-site.xml

中添加属性:

 
     
         
         fs.default.name
         hdfs://master:9000
     
     
         
         hadoop.tmp.dir
         /root/hadoop-2.7.7/data/tmp
     
 

临时目录最好使用自己配置的目录,使用默认的临时目录,当操作系统重启时,内容会被清空,所以最好配置一下临时目录,配置后要确保临时目录是存在的,可以使用 mkdir 命令创建一个文件夹来充当临时目录。

3、配置 hdfs-site.xml

中添加属性:

    
     
         
         dfs.replication
         2
     
     
         
         dfs.namenode.secondary.http-address
         slave2:50090
     
 

4、配置mapred-site.xml

复制或者修改 mapred-site.xml.template 文件,命名为 mapred-site.xml

 mv mapred-site.xml.template mapred-site.xml

中添加属性:

 
     
         mapreduce.framework.name
         yarn
     
 

5、配置 yarn-site.xml

中添加属性:

 
     
         yarn.resourcemanager.hostname
         master
     
     
         yarn.nodemanager.aux-services
         mapreduce_shuffle
     
 

6、配置 slaves

添加如下内容

 slave1
 slave2

2.3、拷贝 Hadoop 文件夹到 slave1 和 slave2
 # 根据自己的实际情况填写目录地址
 scp -r /root/hadoop-2.7.7 slave1:/root/ 
 scp -r /root/hadoop-2.7.7 slave2:/root/

3、配置 Hadoop 系统环境变量

将 Hadoop 的安装目录添加到 /etc/profile 文件中,具体配置如下:

 export HADOOP_HOME=/root/hadoop-2.7.7
 export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

保存退出,并执行

 source /etc/profile

4、启动集群

4.1、格式化

在 namenode 上执行初始化,因为 master 是 namenode,slave1 和 slave2 都是 datanode,所以只需要对master 进行初始化操作,也就是对 hdfs 进行格式化。

进入到 master 这台机子的 /root/hadoop-2.7.7/bin 目录,执行命令

 hdfs namenode -format

返回状态为" 0 "即为格式化成功,注意只能执行一次。

 NFO util.ExitUtil: Exiting with status 0

4.2、启动和停止服务

1、启动服务命令

 start-all.sh
 # 如果提示输入密码,就是ssh没有配置好,可能是没有给master配置免密钥登录,即没有执行ssh-copy-id master

2、关闭服务命令

 stop-all.sh

3、查看启动是否成功命令

 jps

在 master 主节点上,输入 jps,出现 NameNode 即为启动成功;在 slave1、slave2 子节点上,输入 jps,显现 DataNode 即为启动成功。

4、测试是否安装成功

执行下列命令,计算 pi,也可以使用其他样例进行测试

 hadoop jar /root/hadoop-2.7.7/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.5.jar pi 5 5 

如果执行完毕,最后输出 pi 的结果,说明 Hadoop 安装没有问题。

 # 比如输出如下所示的结果
 Estimated value of Pi is 3.68000000000000000000

5、页面

浏览器访问 http://master:50070/ 即可打开Hadoop Web 界面

注:不同版本端口号可能不一致,具体可以参考官方文档

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/603789.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号