目录
一、新建虚拟机:
二、连接XSHell
三、修改主机名称和网络名称
四、关闭防火墙
五、关闭selinux
六、jdk的安装与卸载
七、hadoop的安装
八、克隆
九、配置slave1和slave2
十、ssh免密登录
十一、格式化节点
十二、启动hadoop集群
参考教程:
https://blog.csdn.net/babyxue/article/details/80970526#commentBox
静态IP设置:
master
ip:192.168.100.10
网关:192.168.100.2
子网掩码:255.255.255.0
DNS:202.106.196.115
选择DNS为“手动”
设置root 密码123
设置qiao 密码123
连接master
设置连接用户为root,密码为123
[root@master ~]# vim /etc/hosts
[root@master ~]# vim /etc/sysconfig/network
关闭:[root@master ~]# systemctl stop firewalld.service
禁止开机启动:[root@master ~]# systemctl disable firewalld.service
查看状态:[root@master ~]# firewall-cmd --state
[root@master ~]# vim /etc/selinux/config
1.查看
[root@master ~]# rpm -qa|grep jdk
2.卸载
[root@master ~]# yum -y remove java java版本
若遇到yum正在被占用:[root@master ~]# rm -f /var/run/yum.pid
3.将下载好的jdk通过xshell拖动到指定的文件夹中并将其解压
在root下创建文件夹java:[root@master ~]# mkdir java
将jdk解压到/root/java/:[root@master ~]# tar -zxvf jdk-8u45-linux-x64.tar.gz -C java
将压缩包删除:[root@master ~]# rm -rf jdk-8u45-linux-x64.tar.gz
4.配置环境
[root@master ~]# vim /etc/profile
JAVA_HOME=~/java/jdk1.8.0_45
JRE_HOME=~/java/jdk1.8.0_45/jre
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME
export JRE_HOME
export CLASS_PATH
export PATH
[root@master ~]# source /etc/profile
[root@master ~]# java -version
1.解压
将下载好的hadoop通过xshell拖动到master中
在root下创建文件夹hadoop:[root@master ~]# mkdir hadoop
将hadoop解压到/root/hadoop/:[root@master ~]# tar -zxvf hadoop-3.1.0.tar.gz -C ./hadoop/
2.配置环境
hadoop-3.1.0
[root@master ~]# vim /etc/profile
export HADOOP_HOME=~/hadoop/hadoop-3.1.0
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
[root@master ~]# source /etc/profile
[root@master ~]# hadoop version
3.配置hadoop
(1)创建目录
在~/hadoop下创建目录
[root@master hadoop]# mkdir tmp
[root@master hadoop]# mkdir var
[root@master hadoop]# mkdir dfs
[root@master hadoop]# mkdir dfs/data
[root@master hadoop]# mkdir dfs/name
(2)修改配置文件
进入~/hadoop/下的hadoop-3.1.0/etc/hadoop/文件夹中
[root@master hadoop]# cd hadoop-3.1.0/etc/hadoop/
[root@master hadoop]# vim workers
删除localhost 添加从节点的名称
[root@master hadoop]# vim hadoop-env.sh
在# JAVA_HOME=/usr/java/testing hdfs dfs -ls下面添加如下内容:
export JAVA_HOME=~/java/jdk1.8.0_45
export HADOOP_HOME=~/hadoop/hadoop-3.1.0
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
以下配置在各个文件的
[root@master hadoop]# vim core-site.xml
fs.defaultFS
hdfs://master:9000
hadoop.tmp.dir
/root/hadoop/tmp
[root@master hadoop]# vim hdfs-site.xml
dfs.name.dir
/root/hadoop/dfs/name
Path on the local filesystem where theNameNode stores the namespace and transactions logs persistently.
dfs.data.dir
/root/hadoop/dfs/data
Comma separated list of paths on the localfilesystem of a DataNode where it should store its blocks.
dfs.namenode.http-address
master:50070
dfs.replication
2
在命令行输入如下命令,并将返回地址复制,在配置yarn-site.xml时会用到:
[root@master hadoop]# hadoop classpath
[root@master hadoop]# vim yarn-site.xml
yarn.resourcemanager.hostname
master
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.nodemanager.aux-services.mapreduce.shuffle.class
org.apache.hadoop.mapred.ShuffleHandler
yarn.nodemanager.resource.cpu-vcores
1
yarn.nodemanager.vmem-check-enabled
false
yarn.application.classpath
输入刚才返回的Hadoop classpath路径
[root@master hadoop]# vim mapred-site.xml
mapred.job.tracker
master:49001
mapred.local.dir
/root/hadoop/var
mapreduce.framework.name
yarn
将master分别克隆为slave1和slave2
1.配置静态IP
(1)配置slave1的静态IP:
在slave1的右上角点击:
点击红框内设置salve1的静态IP
将地址改为192.168.100.12 保存
打开slave1终端:
重启网络:[qiao@master ~]$ systemctl restart network.service
(注意 这时候slave1的主机名称还是master)
(2)配置slave2的静态IP:
修改方式与slave1一致
将地址改为192.168.100.13
(3)检测slave1和slave2是否能
[qiao@master ~]$ ping www.baidu.com
ping 192.168.100.11 检测master、slave1和slave2是否能相互两两ping通
2.修改主机名称
[root@master ~]# vim /etc/hostname
[root@master ~]# vim /etc/sysconfig/network
修改后重启slave1和slave2
注意:master、slave1和slave2都要在root下进行操作
(1)master:
a.[root@master ~]# ssh-keygen -t rsa
一直按回车直到该命令结束
分别在slave1和slave2上执行相同的操作
b.进入到/root/.ssh目录下
[root@master ~]# cd /root/.ssh
将 id_rsa.pub写入authorized_keys
[root@master .ssh]# cat id_rsa.pub >> authorized_keys
更改authorized_keys的权限
[root@master .ssh]# chmod 644 authorized_keys
c.将authorized_keys发送给slave1和slave2
[root@master .ssh]# scp authorized_keys slave1:/root/.ssh/
输入yes和slave1的密码即可
[root@master .ssh]# scp authorized_keys slave2:/root/.ssh/
(2)slave1:
a.进入到/root/.ssh路径下
[root@slave1 ~]# cd /root/.ssh/
b.更改authorized_keys的权限
[root@slave1 .ssh]# chmod 644 authorized_keys
c.将 id_rsa.pub追加到authorized_keys
[root@slave1 .ssh]# cat id_rsa.pub >> authorized_keys
d.将authorized_keys发送给slave2
[root@slave1 .ssh]# scp authorized_keys slave2:/root/.ssh/
(3)slave2:
a.进入到/root/.ssh路径下
[root@slave2 ~]# cd /root/.ssh/
b.更改authorized_keys的权限
[root@slave2 .ssh]# chmod 644 authorized_keys
c.将 id_rsa.pub追加到authorized_keys
[root@slave2 .ssh]# cat id_rsa.pub >> authorized_keys
d.将authorized_keys分别发送给master和slave1
[root@slave2 .ssh]# scp authorized_keys master:/root/.ssh
[root@slave2 .ssh]# scp authorized_keys slave1:/root/.ssh
(4)验证
在master上:
登录[root@master .ssh]# ssh slave1
登出[root@slave1 ~]# logout
在master:
进入到~/hadoop/hadoop-3.1.0/sbin/路径下
[root@master ~]# cd hadoop/hadoop-3.1.0/sbin/
格式化节点
[root@master sbin]# hdfs namenode -format
运行后不报错并在倒数四五行出现successfully即为格式化节点成功
注意:在没有出现错误的情况下,节点格式化一次即可
master:
[root@master sbin]# ./start-all.sh
[root@master sbin]# jps
slave1、slave2:
[root@slave1 ~]# jps
在浏览器中:192.168.100.11:50070
运行一个样例程序:
hadoop中自带wordcount样例程序,现在运行它
(1)创建本地示例文件:
现在/root/hadoop下创建目录:
[root@master hadoop]# mkdir file
在file下创建两个文件file1.txt和file2.txt
[root@master hadoop]# cd file/
[root@master file]# echo "Hello World" > file1.txt
[root@master file]# echo "Hello Hadoop" > file2.txt
可以使用命令查看文件是否创建好
[root@master file]# more file1.txt
(2)在HDFS上创建输入文件夹input
先进入到/root/hadoop/hadoop-3.1.0/路径下
[root@master /]# cd /root/hadoop/hadoop-3.1.0
在HDFS上创建input文件夹
[root@master hadoop-3.1.0]# bin/hadoop fs -mkdir -p /input
查看是否创建成功
[root@master hadoop-3.1.0]# bin/hadoop fs -ls /
(3)上传本地的file文件夹中的文件到集群的input目录下
[root@master hadoop-3.1.0]# bin/hadoop fs -put /root/hadoop/file/file*.txt /input/
查看是否上传成功
[root@master hadoop-3.1.0]# bin/hadoop fs -ls /input/
(4)在集群上运行wordcount例子
在hadoop的安装环境下运行模糊查找命令,找到wordcount样例编译好的jar包的位置
[root@master hadoop-3.1.0]# find -name *example*
运行程序
[root@master hadoop-3.1.0]# bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.0.jar wordcount /input /output
查看output下的文件
[root@master hadoop-3.1.0]# bin/hadoop fs -ls /output
查看运行的结果
[root@master hadoop-3.1.0]# hadoop fs -cat /output/part-r-00000
运行结束后关闭hadoop:
[root@master sbin]# ./stop-all.sh
若在关闭时遇到错误,再次运行该命令
补充:
删除hdfs上的文件:
[root@master hadoop-3.1.0]# bin/hdfs dfs -rm -r /output
错误:
之前在运行wordcount程序时,遇到错误:
这个意思是虚拟内存不足,修改配置文件yarn-site.xml
添加一下内容:
yarn.nodemanager.vmem-check-enabled
false
即将检查虚拟内存属性改为false
这样问题就解决了