写在前面
本文所用的配置如下所示
虚拟机 VMware Workstation 15 Pro
JDK jdk-8u202-linux-x64-demos.tar.gz
Linux Centos7.7.1908_DVD
Hadoop Hadoop 2.8.5
MySQL mysql80-community-release-el7-1
由于有些内容如主机名、IP地址、安装路径等是用户自己的设置的,为了避免产生混淆,在本例中的自定义内容列举如下,读者可以根据自己的情况设置:
Master IP与主机名
192.169.170.133 Centos01
Slave IP与主机名
192.169.170.134 Centos02
192.169.170.135 Centos03
压缩包存放路径
/opt/softwares/
压缩包解压路径
/opt/modules/
安装Centos
启动VMware,点击创建新的虚拟机
在安装向导中选择典型安装
然后选择下载好的Centos镜像
其余选项均选择默认设置,直接点击下一步,完成。
Centos安装程序启动后,SOFTWARE SELECTION中选择GMONE Desktop。
其他选项按照默认设置,点击开始安装。
在虚拟机上安装好Centos后,在/opt/目录下建立两个文件夹modules和softwares。
安装JDK和Hadoop
下载JDK8的安装包(截图是最新的版本,博主使用的是jdk-8u202)存放在softwares文件夹里,并解压到/opt/modules/
。
随后配置JAVA环境变量。执行gedit /etc/profile
,在结尾加入如下内容
export JAVA_HOME=/opt/modules/jdk1.8.0_202
export PATH=$PATH:$JAVA_HOME/bin
执行source /etc/profile
使修改生效。
同样,下载Hadoop2.8.5安装包到softwares文件夹中,并解压到modules中。
执行gedit /etc/profile
,将如下内容加入末尾
export HADOOP_HOME=/opt/modules/hadoop-2.8.5
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/native"
执行source /etc/profile
使修改生效。
配置IP映射
- 用root账号登录,执行
gedit /etc/hostname
,将主机名改为Centos01,重启生效。
- 关闭防火墙。执行
systemctl stop firewalld.service
操作可以关闭防火墙,执行systemctl status firewalld.service
可以查看防火墙是否被关闭。如显示如下信息,说明防火墙已经成功关闭。
- 点击虚拟机左上角的编辑虚拟网络设置,
将VMware8的IP地址等属性改成如图所示
- 在设置中打开网络设置,开启有线网络,点击设置。
将本机的IPv4地址设置为到与VMware8在同一子网内。例如设IP地址为255.255.255.0
,子网掩码设置为255.255.255.0
,网关设置为192.168.170.2
,DNS设置为192.168.170.2
。
- 建立主机映射
执行gedit /hosts
,将文件改为如下内容(本例以3个虚拟机建立集群)
192.168.170.133 Centos01
192.168.170.134 Centos02
192.168.170.135 Centos03
- 将
/etc/sysconfig/network-scripts/ifcfg-ens33
全部设置为如下字段,修改完后执行service network restart命令,如能正常启动说明修改正确(HWADDR
为虚拟机的硬件地址)。
HWADDR=00:0C:29:F6:B1:DB
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.170.133
NETMASK=255.255.255.0
GATEWAY=192.168.170.2
DNS=192.168.170.2
7.执行ping www.baidu.com
命令,若能返回信息,则说明连接互联网成功。
8. 克隆主机
现将主机关机,克隆出两台虚拟机,IP地址分别设置为192.168.170.134
和192.168.170.135
,hostname分别设置为Centos02
和Centos03
。其余设置和之前的相同。
配置ssh
输入ssh localhost
命令,再输入cd ~/.ssh
命令
配置Hadoop
- 依次修改如下文件:
/opt/modules/hadoop-2.8.5/etc/hadoop/core-site.xml
的configuration部分设置为以下内容,目的是配置Service 的URI 地址、Hadoop集群临时目录等信息。
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://Centos01:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/opt/modules/hadoop-2.8.5/tmp</value>
</property>
</configuration>
/opt/modules/hadoop-2.8.5/etc/hadoop/hdfs-site.xml
的configuration部分设置为以下内容,目的是配置Hadoop集群的HDFS 另lj 名、通信地址、端口等信息。
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.permissions.enabled</name>
<value>false</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/opt/modules/hadoop-2.8.5/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/opt/modules/hadoop-2.8.5/tmp/dfs/data</value>
</property>
</configuration>
/opt/modules/hadoop-2.8.5/etc/hadoop/yarn-site.xml
中的configuration部分设置为以下内容,目的是为资源管理器启动脚本添加JAVA_ HOME 路径
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
/opt/modules/hadoop-2.8.5/etc/hadoop/mapred-site.xml
中的configuration部分设置为
(目录中本身没有mapred-site.xml
文件,需要将mapred-site.xml.template
文件重命名为mapred-site.xml
)
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
/opt/modules/hadoop-2.8.5/etc/hadoop/slaves
的内容改为
Centos01
Centos02
Centos03
在/opt/modules/hadoop-2.8.5/etc/hadoop/hadoop-env.sh
的结尾加上以下内容,目的是为Hadoop 集群启动脚本添加JAVA_HOME 路径
export HADOOP_PID_DIR=${HADOOP_PID_DIR}
export HADOOP_SECURE_DN_PID_DIR=${HADOOP_PID_DIR}
export HADOOP_IDENT_STRING=$USER
export JAVA_HOME=/opt/modules/jdk1.8.0_202
export HADOOP_HOME=opt/modules/hadoop-2.8.5
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib:$HADOOP_COMMON_LIB_NATIVE_DIR"
- 配置完Hadoop后,执行以下命令将Hadoop路径文件复制到克隆机中
scp -r /opt/modules/hadoop-2.8.5/ root@Centos02 /opt/modules/
scp -r /opt/modules/hadoop-2.8.5/ root@Centos03 /opt/modules/
启动Hadoop
- 初始化
执行hdfs namenode -format
命令进行格式化,如果返回以下信息,则说明格式化成功。如果Exiting with status不是0,则格式化未成功,请检查之前的步骤及配置是否正确。
INFO util.ExitUtil: Exiting with status 0
INFO namenode.NameNode: SHUTDOWN_MSG:
************************************************************
SHUTDOWN_MSG: Shutting down NameNode at Centos01/192.168.170.133
在成功运行Hadoop之后,如果再次初始化,会导致Master的datanode无法启动。一种原因是ID发生错乱,解决方法可以参考Hadoop 启动后使用JPS查看没有DataNode。
- 启动Hadoop集群
以上步骤配置完毕后,执行start-all.sh
启动集群。输入jps
命令,可以看到正在运行的组件,正常情况会返回如下名称
3568 NodeManager
9283 Jps
2967 NameNode
3290 SecondaryNameNode
3453 ResourceManager
3118 DataNode
常见问题
- 环境变量问题
如果没法在./hadoop-2.8.5/sbin/
路径外运行hdfs命令,可能是/etc/hosts文件没有添加Hadoop的环境变量或者没有用source刷新hosts文件
安装Zookeeper
- 下载Zookeeper安装包 (本文下载的是zookeeper-3.4.14)。
- 在主节点下载并解压压缩包。
- 将
./zookeeper-3.4.14/conf/
中的zoo_sample.cfg
重命名为zoo.cfg
,添加如下内容
dataDir=/opt/modules/zkdata <!-->该路径可以自定义<-->
server.1=Centos02:2888:3888
server.2=Centos03:2888:3888
- 在
./zkdata/
中创建一个文件myid
,文件中写入一个0-255的整数,该数字要与节点一一对应,比如Centos01的数字是1,Centos02的数字便是2,以此类推。 - 将以上步骤同步到其他节点中。
安装Hive
安装MySQL
切换到root用户,输入yum install mysql mysql-server
,会自动安装如下组件
mysql-community-libs-8.0.18-1.el7.x86_64
mysql-community-common-8.0.18-1.el7.x86_64
mysql80-community-release-el7-1.noarch
mysql-community-server-8.0.18-1.el7.x86_64
mysql-community-client-8.0.18-1.el7.x86_64