集群Hadoop实验(虚拟机模拟)centOS
选择一台作为Master,其余的作为Slave结点。
三台虚拟机的用户名都是qinphy
官网下载Hadoop3.1.3(https://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-3.1.3/hadoop-3.1.3.tar.gz )
ssh网络配置
三台虚拟机都需要做的
- 卸载原有的ssh:原本的有缺陷。
- 安装ssh
- 修改ssh的配置文件,使其能够ssh远程用密码登录。
- 修改hosts文件,配置网络地址的映射。
- 测试本地连接,自动生成~/.ssh文件夹
# 卸载安装中途都默认yes
$ sudo yum remove openssh-server
$ sudo yum install openssh-server
$ sudo vi /etc/ssh/sshd_config
ssh配置文件需要添加的内容:
Port=22 PermitRootLogin=yes PasswordAuthentication=yes
# 启动ssh服务
$ sudo systemctl start sshd.service
$ sudo vi /etc/hosts
hosts文件需要添加的内容(每台机器的IP地址和自定义的结点名称)
192.168.165.132 Master 192.168.165.130 Slave1 192.168.165.131 Slave2
内容是IP + 结点名称,构成地址映射。
# 测试映射和连接,在Master上:
$ ping Slave1 -c 3
$ ping Slave2 -c 3
# 有时间显示,连接正常
# 测试本地连接
$ ssh localhost
password:
$ exit
Master结点要做的
- 用ssh设置免密登录
- 测试本地免密
- 测试免密登录Slave1和Slave2
$ cd ~/.ssh
$ ssh-keygen -t rsa
# 一直回车即可
$ cat ./id_rsa.pub >> ./authorized_keys
$ chmod 600 ~/.ssh/authorized_keys
$ ssh localhost
# 这里不用输入密码
$ exit
$ ssh-copy-id qinphy@Slave1
yes
password:
$ ssh-copy-id qinphy@Slave2
yes
password:
安装JAVA环境
JAVA选择的是JDK1.8版本,提前下载到了windows里面
这里采用手动安装:
XShell自带文件传输
也可以安装lrzsz传输文件:
# 三台虚拟机都要做的 $ sudo yum install lrzsz # rz上传文件 # sz下载文件
# 三台虚拟机都需要安装JAVA环境
# 创建~/Downloads文件夹,把外来的软件包放这里
$ mkdir ~/Downloads
$ cd ~/.Downloads
# 安装了lrzsz就用rz上传
$ rz
# 创建jvm文件夹,这里是JAVA环境的安装位置
$ cd /usr/lib
$ sudo mkdir jvm
# 解压安装JDK
$ cd ~/Downloads
$ sudo tar -zxvf ./jdk-8u162-linux-x64.tar.gz -C /usr/lib/jvm
# 设置JAVA环境变量
$ vim ~/.bashrc
JAVA环境变量:
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_162 export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:$PATH
# 使环境变量生效
$ source ~/.bashrc
# 验证是否安装成功
$ java -version
java version "1.8.0_162"
Java(TM) SE Runtime Environment (build 1.8.0_162-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.162-b12, mixed mode)
安装Hadoop只在Master上
- 解压安装Master
- 授权给qinphy用户
$ cd ~/Downloads
# 用lrzsz上传也可以使用Xshell自带的文件传输
$ rz
$ sudo tar -zxf ./hadoop-3.1.3.tar.gz -C /usr/local
$ cd /usr/local
# 更改文件夹名称
$ sudo mv ./hadoop-3.1.3/ ./hadoop
$ sudo chown -R qinphy ./hadoop
$ cd /usr/local/hadoop
$ ./bin/hadoop version
hadoop-2.7.1
...
Hadoop集群配置
配置环境变量
export PATH=$PATH:/usr/local/hadoop/bin:/usr/local/hadoop/sbin
$ sudo vi ~/.bashrc
$ source ~/.bashrc
- 配置分布式环境
$ cd /usr/local/hadoop/etc/hadoop
$ sudo vi workers
# Hadoop-2.7.1方法: $ sudo vi slaves
slaves文件配置
# 删除localhost # localhost Slave1 Slave2
$ sudo vi core-site.xml
core-site.xml 文件配置:
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://Master:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>file:/usr/local/hadoop/tmp</value> <description>Abase for other temporary directories.</description> </property> </configuration>
$ sudo vi hdfs-site.xml
hdfs-site.xml文件配置:
<configuration> <property> <name>dfs.namenode.secondary.http-address</name> <value>Master:50090</value> </property> <property> <name>dfs.replication</name> <value>2</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:/usr/local/hadoop/tmp/dfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/usr/local/hadoop/tmp/dfs/data</value> </property> </configuration>
$ sudo vi mapred-site.xml
# 安装Hadoop-2.7.1如下方法: $ sudo mv mapred-site.xml.template mapred-site.xml $ sudo vi mapred-site.xml
mapred-site.xml配置文件:
<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>
$ sudo vi yarn-site.xml
yarn-site.xml配置文件:
<configuration> <property> <name>yarn.resourcemanager.hostname</name> <value>Master</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> </configuration>
Slave结点的配置
- 把Master结点的Hadoop文件移植到Slave节点上。
- Slave结点解压安装这些文件。
# Master结点上的压缩转移
$ cd /usr/local
$ tar -zcf ~/hadoop.master.tar.gz ./hadoop
$ cd ~
$ scp ./hadoop.master.tar.gz Slave1:/home/qinphy
password:
$ scp ./hadoop.master.tar.gz Slave2:/home/qinphy
password:
# 在Salve结点上:
$ sudo tar -zxf ~/hadoop.master.tar.gz -C /usr/local
$ sudo chown -R qinphy /usr/local/hadoop
Master结点的启动
# 初始化Namenode,只在第一次运行时需要
$ hdfs namenode -format
注意:CentOS需要关闭防火墙:
$ systemctl stop firewalld.service $ systemctl disable firewalld.service
启动结点:
$ start-dfs.sh
$ start-yarn.sh
$ mr-jobhistory-daemon.sh start historyserver
# 以上语句等同于:
$ start-all.sh
# 在Master上验证:
$ jps
# 在Slave上验证
$ cd /usr/local/hadoop
$ jps
Master验证结果:
Slave1上验证结果:
Slave2上验证结果:
Master还有一个重要的report验证:
$ hdfs dfsadmin -report
结果是(出现Live datanode != 0):