工具:装了CentOS系统的虚拟机
这里是先实现伪分布式,再对伪分布式进行克隆,修改得到的完全分布式
第一步:安装前准备
1.关闭防火墙
[root@localhost ~]# systemctl stop
firewalld
关闭防火墙
[root@localhost ~]# systemctl disable
firewalld
防止开机启动防火墙
2.将计算机重命名
运行命令
hostnamectl set-hostname 名字
重启
reboot
3.安装linux版的JDK1.8
jdk1.8Linux版链接👇
链接:https://pan.baidu.com/s/1_uMp9acRxhFQCO8PQDfo3Q
提取码:2jiq
这个是安装在虚拟机里面的,传进虚拟机解压就行了,小白不要给他直接解压了。
我建议在普通用户home目录下新建一个文件夹,专门存放这些工具,避免寻找的时候很麻烦
最好用普通用户安装,因为我后续演示的操作都为普通用户下的操作
4.配置JDK环境变量
输入命令vim ~/.bash_profile
在文件末尾插入这两句话就行了
路径一定要填你自己的安装路径!!!切勿直接照抄!!!在你的jdk安装路径下输入pwd就可以获得当前的路径
让环境变量生效一下
输入命令:source ~/.bash_profile
输入命令javac或者java看看有没有报错
验证一下安装有没有问题
5.下载并安装Hadoop
hadoop压缩包👇同理解压在Linux里面
链接:https://pan.baidu.com/s/1YBulGsEjay0ltMu3YA8ouw
提取码:h37y
这里就一并配置好环境变量吧,配置命令跟jdk的配置一样
在bash_profile最下面再加上两句话就行了。👇
路径一定要填你自己的安装路径!!!切勿直接照抄!!!在你的Hadoop安装路径下输入pwd就可以获得当前的路径
让环境变量生效:source ~/.bash_profile
若开机登录是root用户,切换到普通用户,需要重新输入使环境变量立即生效的命令
输入命令hadoop看看有没有报错,验证一下安装是否成功
6.运行官方案例测试Hadoop
官方案例:
运行结果
hadoop 是Hadoop的启动命令 jar以jar包方式运行
hare/hadoop/mapreduce-examles-2.7.2.jar是Hadoop官方提供的案例目录
grep启动grep案例
grep_in输入目录(需自己创建)
grep_out输出目录(不能自己创建,运行结果存储在里面)
‘dfs[a-z.]+’正则表达式 表示以dfs开头的匹配项
第二步:搭建伪分布式
什么是分布式????
在同一台机器上运行不同的进程(伪分布式)
在不同的机器上运行相同的进程(完全分布式)
1.修改hadoop软件路径下 etc/hadoop中的core-site.xml
在最下面插入
:wq保存退出
2.修改hadoop软件路径下etc/hadoop中的hdfs-site.xml
最下面插入
:wq保存退出
3.初始化namenode
命令:
hdfs namenode -format
此命令切记只能执行一次,否则后续会出现重置namenode 的id的现象,就无法和datanode的id相互对应,如果出现了重启多次,就直接删除hadoop安装路径下的data目录重新初始化
初始化完成会发现hadoop安装路径下出现了data路径
进去到tmp路径下,会有name和data两个目录,分别就是对应着namenode和datanode
4.启动namenode
通过jps命令可以看到,namenode已经运行起来了
前往浏览器输入 虚拟机ip:50070就可以进入该hadoop机群的界面
4.启动datanode
可以看到datanode也链接上了
上传一个文件测试一下
此时点开文件有文件下载的选项,但是这里如果进行下载,会出现无法下载的情况
这个原因是因为Windows并不知道你的虚拟机的名字对应的ip地址,无法进行下载,这时需要对C:\Windows\System32\drivers\etc路径下的hosts文件进行配置
在此文件里输入:虚拟机IP 计算机名
保存退出,这时windows就可以识别到虚拟机的ip了
这里直接配置三个,为了方便后面完全分布式的克隆机群使用
搭建yarn伪分布式
进入hadoop目录,编辑etc/hadoop/里面的一些文件
配置yarn-site.xml
置yarn-env.sh
配置mapred-env.sh
配置hadoop-env.sh
注意maperd-env.sh会多出一个.template后缀(临时文件),重命名产出这个后缀
.sh文件进去之后修改JAVA_HOME即可
搭建成功全部启动
启动yran之前先启动namenode和datanode
[hadoop@hadoop101 ~]$ yarn-daemon.sh start
resourcemanager
[hadoop@hadoop101 ~]$ yarn-daemon.sh start
nodemanager
端口号8088
跑一个案例在分布式上创建目录运行案例
实现分布式
先修改系统时间,设置hadoop101~103的系统时间为网络时间
安装ntpdate工具
yum -y install ntp ntpdate
设置系统时间与网络时间同步
ntpdate cn.pool.ntp.org
配置core-site.xml
配置hdfs-site.xml
设置副本为3
指定secondnamenode为hadoop103这个机器
配置yarn-site.xml
将resourcemanager 配置到hadoop102上
配置maperd-site.xml
以上步骤均在hadoop101完成配置
配置完成后用scp发送到hadoop102和hadoop103
发送完成
逐步启动
1.在hadoop101上启动namenode
[hadoop@hadoop101 logs]$ hadoop-daemon.sh
start namenode
2.在全部机器上启动datanode
hadoop-daemon.sh start datanode
3.在hadoop103机器上启动secondarynamenode
[hadoop@hadoop103 ~]$ hadoop-daemon.sh
start secondarynamenode
4.在hadoop102上启动resourcemanager
[hadoop@hadoop102 hadoop]$
yarn-daemon.sh start resourcemanager
5.在所有机器上启动nodemanager
[hadoop@hadoop102 ~]$ yarn-daemon.sh start
nodemanager
到此时完全分布式已经搭建完毕了,这时基于伪分布式进行修改的
这时在hdfs上跑一个官方案例
在hdfs上建立一个wc_in文件夹
[hadoop@hadoop101 ~]$ hdfs dfs -mkdir
/wc_in
上传几个有内容的文件到wc_in中
[hadoop@hadoop101 ~]$ hdfs dfs -put h*
/wc_in
调用wordcount案例查一下上传的文件内的单词数量
[hadoop@hadoop101 ~]$hadoop jar hadoopsoftware/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar
wordcount /wc_in /wc_out
然后再hdfs上进行查看
[hadoop@hadoop101 ~]$ hdfs dfs -cat
/wc_out/*
搭建完成!!!!!!!
以上是手动启动
配置群起ssh
群起调用
start-all.sh命令
分别在三台机器上创建密钥对
ssh-keygen -t rsa
敲三次回车
进入home目录,查看隐藏文件夹.ssh
里面会出现id_rsa和id_rsa.pub
其中.pub是公钥,另一个是私钥
可以cat 查看一下,看了也没什么卵用
这时需要将每台机器的公钥发送给另外两台机器
发送完就ok了直接start-all.sh
yarn不受配置文件限制
搭建群起的时候需要在resourcemanager机器上调用start-all.sh,否则resourcemanager起不来,群关同理