环境
系统:ContOS 8
虚拟机:VMware 16
hadoop:hadoop-3.3.0.tar.gz
JDK:jdk-8u241-linux-x64.tar.gz
文件上传工具 :WinSCP
连接Linux:XShell
可以在官网下载也可以在百度网盘下载:
操作系统:
链接:https://pan.baidu.com/s/1DuzjRqxwvMXjDsBXeXDObQ
提取码:kdmn
虚拟机:
链接:https://pan.baidu.com/s/1JVjnjvctpR-LaCC-iwRktQ
提取码:9cp5
Hadoop相关:
链接:https://pan.baidu.com/s/1dFLL3PcWsZmGSg1Ex5EzYA
提取码:7ony
要求
安装虚拟机时有三种网络模式:Bridged(桥接模式)、NAT(网络地址转换模式)、 Host-Only(仅主机模式)
安装桥接或者NAT模式
安装桥接或者NAT模式
安装桥接或者NAT模式
网络配置
三种网络模式的网络设置:https://blog.csdn.net/Noob_f/article/details/51099040
我的另一个文章:https://blog.csdn.net/qq_45638264/article/details/111027588
里面涉及IP、网关、掩码、DSN等的详细设置
设置域名
用root用户设置,两个系统都要弄
命令:vim /etc/hosts
保存即可
集群情况
系统名 | 系统域名 | 系统IP | 用户名 |
---|---|---|---|
master | master | 192.168.163.10 | hadoop |
worker01 | worker01 | 192.168.163.11 | hadoop |
上传文件
-
使用root在根目录下建一个bigdata目录:
mkdir /bigdata
-
给目录加其它用户写的权限:
chmod -R o+w /bigdata
-
使用WinScp软件上传文件
这里的主机名填Linux系统的IP,用户名:root
创建hadoop用户
创建组:groupadd -r hadoop
创建用户:useradd -d /home/hadoop -s /bin/bash -g hadoop hadoop
设密码:passwd hadoop
解压包到bigdata目录中
切换到hadoop用户操作
解压JDK:tar -zxvf jdk-8u241-linux-x64.tar.gz -C /bigdata/
解压Hadoop:tar -zxvf hadoop-3.3.0.tar.gz -C /bigdata/
重命名:
cd /bigdata
mv jdk-8u241-linux-x64 jdk
mv hadoop-3.3.0 hadoop
创建添加环境变量
使用root用户
命令: vim /etc/profile
##JAVA_HOME
export JAVA_HOME=/bigdata/jdk
export PATH=$JAVA_HOME/bin:$PATH
##HADOOP_HOME
export HADOOP_HOME=/bigdata/hadoop
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
随后使用命令:source /etc/profile
查看是否成功:java -verison
免密登录
切换到hadoop用户
master机器:
S1:使用命令:ssh master
输入密码后
要是没有下面这种出现情况---hadoop@master
重启系统,切换到用户hadoop,再使用命令S1
你也可以重启ssh服务试试:命令:systemctl restart sshd
S2:使用命令:ssh-keygen -t rsa
后面都是默认,一直回车
S3:使用命令:cd .ssh
S4:使用命令:cat id_rsa.pub >> authorized_keys
worker01机器:完成步骤:S1~S3
这里的S1:ssh worker01
在hadoop的.ssh目录下
S5:将worker01的公钥发给master:scp id_rsa.pub hadoop@master:/home/hadoop/.ssh/id_rsa.pub.worker01
master机器:
S6:使用命令:cat id_rsa.pub.worker01 >> authorized_keys
master将authorized_keys文件传给worker01
S7:使用命令:scp authorized_keys hadoop@worker01:/home/hadoop/.ssh/
S8:在两台机器上分别测试
都是在Hadoop用户下
命令:ssh master、ssh worker
master:
worker01:
authorized_keys :
authorized_keys 文件是对的,但是就是不能免密登录,看我的另一文章:https://blog.csdn.net/qq_45638264/article/details/109114939
配置Hadoop文件
注意:完全分布式的Hadoop配置内容和伪分布式不同!! 利用hadoop搭伪分布式环境需要配置4个xml文件,这4个xml文件都在/bigdata/hadoop/etc/hadoop文件夹中。
先在master上配置,再通过scp命令复制到worker01
使用hadoop用户操作
(1)修改hadoop-env.sh配置文件
配置hadoop-env.sh过程 |
---|
S1:打开hadoop-env.sh文件,将当前位置切换了/bigdata/hadoop/etc/hadoop中,使用命令vim hadoop-env.sh,命令执行后hadoop-env.sh文件被打开 |
S2:在hadoop-env.sh文件中修改JAVA_HOME环境变量,将export JAVA_HOME=${JAVA_HOME}(虽然之前的代码也能获取到JAVA_HOME的值,但是有时候会失效)修改为export JAVA_HOME=/bigdata/jdk |
(2)修改core-site.xml配置文件
配置core-site.xml过程 |
---|
S1:打开core-site.xml文件,将当前位置切换了/bigdata/hadoop/etc/hadoop中,使用命令 vim core-site.xml,命令执行后,core-site.xml文件被打开 |
S2:在core-site.xml文件末尾添加上如下代码: |
代码如下(<'configuration'>和<'/configuration'>标签原来就有):
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/bigdata/hadoop/etc/hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
<final>true</final>
</property>
</configuration>
注意: hadoop.tmp.dir文件不是一个临时文件,是存放所有master中数据的文件,其目录地址为:/bigdata/hadoop/etc/hadoop/tmp。
(3)修改hdfs-site.xml配置文件
配置hdfs-site.xml过程 |
---|
S1:打开hdfs-site.xml文件,将当前位置切换了/bigdata/hadoop/etc/hadoop中,使用命令vim hdfs-site.xml,命令执行后hdfs-site.xml文件被打开 |
S2:在hdfs-site.xml文件末尾添加上如下代码: |
代码如下(<'configuration'>和<'/configuration'>标签原来就有):
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
<final>true</final>
</property>
<property>
<name>dfs.http.address</name>
<value>0.0.0.0:50070</value>
</property>
</configuration>
注意:2是指备份2份(总共2份)。在hadoop中默认有3份文件(含备份),这里总共想要存放2份文件,则改为2。
dfs.http.address是为了让浏览器可以访问
(4)修改mapred-site.xml配置文件
配置mapred-site.xml过程 |
---|
S1:(1)打开mapred-site.xml文件(你会发现在/bigdata/hadoop/etc/hadoop中没有mapred-site.xml文件,只有一个mapred-site.xml.template文件。这是因为mapreduce比较特殊,它可以配置也可以不配置,而其他例如core-site.xml存在因为其必须配置 |
(2)这里只需要将mapred-site.xml.template复制一下,并且将文件名改为mapred-site.xml进行修改即可,直接在/bigdata/hadoop/etc/hadoop/下使用 cp mapred-site.xml.template mapred-site.xml即可) |
(3)将当前位置切换了/bigdata/hadoop/etc/hadoop/中,使用命令 vim mapred-site.xml,命令执行后mapred-site.xml文件被打开 |
S2:在mapred-site.xml文件末尾添加上如下代码: |
代码如下(`<'configuration'>`和`<'/configuration'>`标签原来就有):
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>master:9001</value>
</property>
</configuration>
(5)修改yarn-site.xml配置文件
配置yarn-site.xml过程 |
---|
S1:打开yarn-site.xml文件,将当前位置切换了/bigdata/hadoop/etc/hadoop中,使用命令sudo vi yarn-site.xml,命令执行后yarn-site.xml文件被打开 |
S2:在yarn-site.xml文件末尾添加上如下代码: |
代码如下(`<'configuration'>`和 `<'/configuration'>` 标签原来就有):
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>masater</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
(6)配置masters和slaves文件
切换至/bigdata/hadoop/etc/hadoop,使用ls查看文件,发现只有workers,这里使用cp workers masters 命令复制一下。
(1)配置的masters文件如下: |
---|
S1:打开masters文件,将当前位置切换了/bigdata/hadoop/etc/hadoop中,使用命令vim masters,命令执行后masters文件被打开 |
S2:在masters文件末尾添加上如下代码: |
(2)配置的worker01文件如下: |
---|
S1:打开worker01文件,将当前位置切换了/bigdata/hadoop/etc/hadoop中,使用命令vim worker01,命令执行后worker01文件被打开 |
S2:在worker01文件末尾添加上如下代码: |
(7)master向worker01节点复制hadoop配置
worker01系统中也必须用Root建一个bigdata目录
步骤 |
---|
S1:复制JDK。将当前位置切换了/bigdata/下。scp -r jdk/ hadoop@worker01:/bigdata/ |
S1:复制Hadoop。将当前位置切换了/bigdata/下。scp -r hadoop/ hadoop@worker01:/bigdata/ |
(8)worker01中的环境变量和master是一样的。
格式化HDFS文件
在master中格式化
将当前位置切换了/bigdata/hadoop下
格式化:./hdfs namenode -format
启动hdfs
命令: ./sbin/start-dfs.sh
或者:start-dfs.sh
如果配置了yarn的话必须要启动yarn:./sbin/start-yarn.sh
或start-yarn.sh
查看是否启动
命令:jps
master机器:
worker01机器:
在本地浏览器访问:
hdfs:192.168.163.10:50070/
自此,安装成功,测试的话可以自己百度一个计算单词个数。