Linux虚拟机搭建Hadoop集群环境
1.1虚拟机环境准备
1.1.1创建虚拟机
使用VBox创建一个新的Cos7虚拟机
1.1.2更改虚拟机IP地址
vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
修改为如下内容,设置ip为192.168.56.200
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=enp0s3
UUID=2bc72089-8564-4966-abb0-6638df3383c7
DEVICE=enp0s3
ONBOOT=yes
IPADDR=192.168.56.200
重启网络
systemctl restart network
1.1.3修改主机名
-
设置主机名
设置为classhadoop
hostnamectl set-hostname classhadoop
查看
hostnamectl
-
修改主机名查询静态表
编辑
vi /etc/hosts
插入内容
192.168.56.200 classhadoop
1.1.4关闭防火墙
-
关闭防火墙
systemctl stop firewalld
-
禁用防火墙
systemctl disable firewalld
显示以下内容表示禁用成功:
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
Removed symlink /etc/systemd/system/basic.target.wants/firewalld.service.
1.1.5创建hadoop用户
- 创建hadoop用户方便管理
添加用户
useradd hadoop
设置密码
passwd hadoop
- 为hadoop用户添加使用sudo不用输密码的权限
使用root用户修改/etc/sudoers文件
chmod 660 /etc/sudoers
vi /etc/sudoers
找到"Allow root to run any commands anywhere"
添加:
root ALL=(ALL) ALL
kgc ALL=(ALL) ALL(或者是NOPASSWD:ALL)
此时在test用户下使sudo不用输入root密码(在第一次使用时要输入test密码确认身份)
1.1.6创建Hadoop环境存放的目录
在/opt目录下创建文件夹
-
在/opt目录下创建install、software文件夹
-
修改install、software文件夹的所有者
chown hadoop:hadoop /opt/install/ /opt/software/
1.2安装JDK
hadoop是使用java开发的,所以要先安装java环境
在linux系统下hadoop用户下的software目录中上传软件包。
-
解压tar压缩包
tar -zxf jdk* -C /opt/install/
如果是.gz格式参数用-zxvf
-
配置jdk环境变量
vi /etc/profile
在最后在PATH和CLASSPATH添加jJAVA_HOME和JRE_HOME的lib目录与bin目录
export JAVA_HOME=/opt/install/jdk1.8.0_161 export JRE_HOME=/usr/lib/jdk1.8.0_161/jre export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib export PATH=$JAVA_HOME/bin:$PATH
source /etc/profile
-
测试jdk
java -version
1.3安装Hadoop
1.3.1下载安装hadoop
- Hadoop下载地址:
https://archive.apache.org/dist/hadoop/common/hadoop-2.7.2/
- 将Hadoop安装包解压安装文件到/opt/install下面
tar -zxf hadoop-2.7.2.tar.gz -C /opt/install/
-
将hadoop添加到环境变量
-
获取hadoop安装路径
[root@classhadoop hadoop-2.6.0-cdh5.14.2]# pwd
-
打开/etc/profile文件
vi /etc/profile
##HADOOP_HOME export HADOOP_HOME=/opt/install/hadoop-2.6.0-cdh5.14.2 export PATH=$PATH:$HADOOP_HOME/bin export PATH=$PATH:$HADOOP_HOME/sbin
source /etc/profile
-
hadoop集群设计
classhadoop(200) | classhadoop1(201) | classhadoop2(202) | |
---|---|---|---|
HDFS | NameNode DataNode | DataNode | SecondaryNameNode DataNode |
YARN | NodeManager | ResourceManager NodeManager | NodeManager |
1.3.2配置hadoop
hadoop的配置文件放在{HADOOP_HOME}/etc/hadoop/下
-
hadoop-env.sh
vi hadoop-env.sh
# The java implementation to use. export JAVA_HOME=/opt/install/jdk1.8.0_161 //这里放自己的java目录
-
hadoop核心配置文件core-site.xml
mkdir /opt/hadoopdata
vi core-site.xml
将下面内容复制到configuration标签中
<property> <!-- 指定HDFS中NameNode的地址 --> <name>fs.defaultFS</name> <value>hdfs://classhadoop:9000</value> </property> <!--设置hdfs文件存储目录--> <property> <name>hadoop.tmp.dir</name> <value>/opt/hadoopData</value> </property> <!--设置用户权限,默认是root用户--> <property> <name>hadoop.proxyuser.root.users</name> <value>*</value> </property> <property> <name>hadoop.proxyuser.root.groups</name> <value>*</value> </property>
-
hdfs-site.xml:hdfs文件系统配置
配置副本数量为2vi hdfs-site.xml
<configuration> <property> <name>dfs.replication</name> <value>1</value> </property> <!--设置secondaryNN--> <property> <name>dfs.namenode.secondary.http-address</name> <value>classhadoop2:50090</value> </property> </configuration>
-
测试
-
格式化NameNode(第一次启动时格式化,以后就不要总格式化)
hdfs namenode -format
-
启动NameNode
hadoop-daemon.sh start namenode
-
启动DataNode
hadoop-daemon.sh start datanode
-
查看是否启动成功
jps
下面说明ok
[root@classhadoop logs]# jps 10896 Jps 10787 DataNode 10734 NameNode
-
-
mapreduce配置文件
-
mapred-env.sh
配置java_homeexport JAVA_HOME=/opt/install/jdk1.8.0_161
-
mapred-site.xml
cp mapred-site.xml.template mapred-site.xml
vi mapred-site.xml
<configuration> <!-- 指定mr运行在yarn上 --> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>
-
-
yarn-site.xml
vi yarn-site.xml
<configuration> <!-- Site specific YARN configuration properties --> <!-- 指定YARN的ResourceManager的地址 --> <property> <name>yarn.resourcemanager.hostname</name> <value>classhadoop1</value> </property> <!-- reducer获取数据的方式 --> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> </configuration>
2.3.3 SSH无密码登录
-
生成公钥私钥
使用hadoop用户ssh-keygen -t rsa
-
将公钥放到authorized_keys文件中
cat id_rsa.pub > authorized_keys
配置两个从机
复制classhadoop1,更改主机名与ip地址
集群测试
-
如果是第一次启动需要格式化NameNode
hdfs namenode -format
-
启动HDFS
start-dfs.sh
-
启动YARN
start-yarn.sh
注意:NameNode和ResourceManger如果不是同一台机器,不能在NameNode上启动 yarn,应该在ResouceManager所在的机器上启动yarn。