基于CentOS 7的Hadoop平台完全分布式安装,先凑合用,有时间再用ubuntu重新弄。
基础环境配置
主机名
IP地址
账号
密码
master
192.168.1.100
root
123456
slave1
192.168.1.101
root
123456
slave2
192.168.1.102
root
123456
设置三台虚拟机的静态ip(网卡名记得修改):
命令:
1 [root@master ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
文件内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 TYPE =EthernetPROXY_METHOD =noneBROWSER_ONLY =no BOOTPROTO =staticDEFROUTE =yes IPV4_FAILURE_FATAL =no IPV6INIT =yes IPV6_AUTOCONF =yes IPV6_DEFROUTE =yes IPV6_FAILURE_FATAL =no IPV6_ADDR_GEN_MODE =stable-privacyNAME =ens35DEVICE =ens35ONBOOT =yes IPADDR =192.168 .1.100 NETMASK =255.255 .255.0 GETWAY =192.168 .1.254
重启网卡:
1 [root@master ~]# systemctl restart network
修改后使用ip a查看ip是否修改成功,如已安装net-tools亦可以使用ifconfig:
修改三个节点的主机名:
1 [root@master ~]# hostnamectl set-hostname master
slave1:
1 2 3 [root@localhost ~]# hostnamectl set-hostname slave1 [root@localhost ~]# bash [root@slave1 ~]#
slave2:
1 2 3 [root@localhost ~]# hostnamectl set-hostname slave2 [root@localhost ~]# bash [root@slave2 ~]#
或者直接跳过hostnamectl,直接进行下面的修改/etc/hosts文件,修改后再执行systemctl restart network
在master节点的/etc/hosts内部做ip和主机名的映射:
命令:
1 [root@master ~]# vi /etc/hosts
内容:
1 2 3 192.168.1.100 master192.168.1.101 slave1192.168.1.102 slave2
将master的/etc/hosts配置文件拷贝到slave1和slave2的/etc目录下
或者使用MobaXTerm的Multiexec,在三台机器上同时修改
1 2 [root@master ~]# scp /etc/hosts slave1:/etc/ [root@master ~]# scp /etc/hosts slave2:/etc/
在三个节点做免密登录,三个节点都执行如下操作:
或者使用MobaXTerm的Multiexec,在三台机器上同步执行
ssh-keygen可以不用-t rsa,默认即使用rsa
1 2 3 4 [root@master ~]# ssh-keygen -t rsa [root@master ~]# ssh-copy-id master [root @master ~]# ssh-copy-id slave1 [root@master ~]# ssh-copy-id slave2
关闭三个节点的防火墙:
可使用MobaXTerm的Multiexec,在三台机器上同步执行
关闭防火墙:
1 [root@master ~]# systemctl stop firewalld
禁止防火墙开机启动:
1 [root@master ~]# systemctl disable firewalld
hadoop集群部署 jdk的部署和安装 jdk自行从甲骨文官网下载tar.gz安装,或者使用apt安装,下文中使用自行下载的tar.gz安装
此处步骤可以使用MobaXTerm的Multiexec,在三台机器上同步执行
创建要解压的路径:
1 2 3 4 [root@master softwares ] [root@master softwares ] module softwares [root@master softwares ]
解压jdk:
重命名jdk文件件
1 2 3 4 5 6 7 8 9 [root@master softwares ] jdk1.8.0 _212 [root@master softwares ] [root@master module ] jdk1.8.0 _212 [root@master module ] [root@master module ] jdk [root@master module ]
修改环境变量配置:
修改内容:
1 2 3 export JAVA_HOME =/opt/module/jdkexport PATH ="$JAVA_HOME /bin:$PATH "
source使配置文件生效:
1 2 [root@master module ] [root@master module ]
执行java -version 查看Java版本,能看到版本说明配置生效:
1 2 3 4 5 [root@master module ] java version "1.8.0_212" Java(TM) SE Runtime Environment (build 1.8 .0 _212-b10) Java HotSpot(TM) 64 -Bit Server VM (build 25.212 -b10, mixed mode) [root@master module ]
在slave1和slave2节点创建module路径:
1 2 3 [root@slave1 ~]# mkdir /opt/module/ [root@slave1 ~]# [root@slave2 ~]# mkdir /opt/module
拷贝jdk和jdk的环境变量到slave1和slave2节点:
如果上文中的操作已经使用MobaXTerm的Multiexec在三台机器上同步执行,无需拷贝
1 2 [root@master module ]# scp -r /opt/module /jdk/ slave1:/opt/module /jdk [root@master module ]# scp -r /opt/module /jdk/ slave2:/opt/module /jdk
在slave1和slave2节点配置环境变量:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 [root@slave1 jdk]# vi /etc/profile [root@slave1 jdk]# source /etc/profile [root@slave1 jdk]# java -version java version "1.8.0_212" Java(TM) SE Runtime Environment (build 1.8 .0 _212-b10) Java HotSpot(TM) 64 -Bit Server VM (build 25.212 -b10, mixed mode) [root@slave1 jdk]# [root@slave2 ~]# vi /etc/profile [root@slave2 ~]# source /etc/profile [root@slave2 ~]# java -version\ > java version "1.8.0_212" Java(TM) SE Runtime Environment (build 1.8 .0 _212-b10) Java HotSpot(TM) 64 -Bit Server VM (build 25.212 -b10, mixed mode) [root@slave2 ~]#
Hadoop集群配置 此处步骤可以使用MobaXTerm的Multiexec,在三台机器上同步执行
解压hadoop到/opt/module/路径下:
修改文件名称,配置hadoop环境变量
1 2 3 4 [root@master module ] [root@master module ] hadoop jdk [root@master module ]
配置内容:
1 2 3 export HADOOP_HOME =/opt/module/hadoopexport PATH ="$HADOOP_HOME /bin:$PATH "
source并查看hadoop版本:
1 2 3 4 5 6 7 8 [root@master module ] Hadoop 3.1 .3 Source code repository https: //gitbox.apache.org/repos /asf/hadoop .git -r ba631c436b806728f8ec2f54ab1e289526c90579 Compiled by ztang on 2019 -0 9-12 T02: 47 Z Compiled with protoc 2.5 .0 From source with checksum ec785077c385118ac91aadde5ec9799 This command was run using /opt/module /hadoop /share /hadoop /common /hadoop -common -3.1.3.jar [root@master module ]
配置hadoop相关配置文件:
核心配置文件
配置core-site.xml
文件内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 <configuration > <property > <name > fs.defaultFS</name > <value > hdfs://master:9000</value > </property > #可以不配置 <property > <name > hadoop.tmp.dir</name > <value > /opt/module/hadoop/data</value > </property > </configuration >
HDFS配置文件:
配置hdfs-site.xml
文件内容:
1 2 3 4 5 6 7 8 9 10 11 12 <configuration > #可以不配置 <property > <name > dfs.namenode.http-address</name > <value > master:50070</value > </property > #可以不配置 <property > <name > dfs.replication</name > <value > 1</value > </property > </configuration >
YARN配置文件:
配置yarn-site.xml,
配置内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 <configuration > <property > <name > yarn.nodemanager.aux-services</name > <value > mapreduce_shuffle</value > </property > #可以不配置 <property > <name > yarn.resourcemanager.hostname</name > <value > master</value > </property > </configuration >
MAPREDUCE配置文件:
配置mapred-site.xml
配置内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 <configuration > <property > <name > mapreduce.framework.name</name > <value > yarn</value > </property > #可以不配置 <property > <name > mapreduce.jobhistory.address</name > <value > master:10020</value > </property > #可以不配置 <property > <name > mapreduce.jobhistory.webapp.address</name > <value > master:19888</value > </property > </configuration >
配置workers
配置内容:
配置hadoop-env.sh
配置内容:
1 export JAVA_HOME =/opt/module/jdk # 配置为Java位置
配置mapred-env.sh
配置内容:
1 export JAVA_HOME =/opt/module/jdk # 配置为Java位置
配置yarn-env.sh
配置内容:
1 export JAVA_HOME =/opt/module/jdk # 配置为Java位置
将hadoop拷贝到slave1和slave2节点:
如上文内容使用MobaXTerm的Multiexec,在三台机器上同步执行,则无需拷贝
1 2 [root@master hadoop]# scp - r /opt/ module/hadoop/ slave1:/opt/ module/hadoop/ [root@master hadoop]# scp - r /opt/ module/hadoop/ slave2:/opt/ module/hadoop/
格式化namenode(只需要在Master节点执行) :
在/etc/profile下配置hadoop的HDFS用户和yarn的用户(Master必须,Slave无所谓):
配置内容:
1 2 3 4 5 export HDFS_NAMENODE_USER =rootexport HDFS_DATANODE_USER =rootexport HDFS_SECONDARYNAMENODE_USER =rootexport YARN_RESOURCEMANAGER_USER =rootexport YARN_NODEMANAGER_USER =root
source /etc/profile使配置文件生效:
启动Hadoop集群:
1 2 3 [root@master hadoop ] /opt/module/hadoop [root@master hadoop ]
jps(三台都要)查看hadoop进程是否启动,master节点应该存在DataNode、NameNode、SecondaryNameNode、ResourceManager、Jps、NodeManager,slave1,slave2应该至少存在DataNode、Jps、NodeManager