hadoop的安装与测试

hadoop的安装选择

我是在自己电脑上实现的hadoop部署。首先使用的是CentOS 7系统,以及hadoop 3.1.4。还需要下载JDK。还需要一下通讯工具Xshell、Xftp。

安装系统


1、打开VMware Workstations,创建新的虚拟机。在向导中选择自定义
选择稍后安装操作系统。操作系统选择Linux,版本选择CentOS 7 64位。因为是专门为hadoop创建的虚拟机,所以可以将虚拟机的名称改为hadoop100(代表的是服务器集群的老大)。
位置E:\bigbase\CentOS\hadoop100。处理器的数量和内核数量要根据自己的电脑配置来选择,实际上这种在自己电脑上的小打小闹1个处理器、1个内核数量已经够用了。(后期是可以调整的)
内存选择1GB内存,太大了的话我的电脑带不动。网络类型选择使用网络地址转换,下面就是使用推荐即可。创建新虚拟磁盘,最大磁盘大小可以给50GB,这里的磁盘大小选择了之后只是虚拟机能够使用的最大的空间,主机电脑仍然是可以使用的。将虚拟磁盘拆分成多个文件。磁盘文件位置的储存位置E:\bigbase\CentOS\hadoop100\hadoop100.vmdk。然后下一步、完成即可。


2、双击此选项。
在这里插入图片描述
选择准备环节下载的CentOS镜像文件。在这里插入图片描述


3、完成以上操作就可以开启此虚拟机了。
在这里插入图片描述
根据提示回车。
选择中文、并继续。
在这里插入图片描述
点击更改日期。
在这里插入图片描述
设置为和当前相同的时间。
在这里插入图片描述
选择软件安装。
在这里插入图片描述
我选择的是GNOME桌面安装,如果你是一位linux大佬可以直接选择最小安装,因为作为服务器都只需要最小安装即可。
在这里插入图片描述
点击安装位置来添加磁盘分区。
在这里插入图片描述
更改为 我要配置分区 并点击完成。
在这里插入图片描述
点击 + 来添加挂载点。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
点击完成并接受更改。
点击网络和主机名,并打开链接。
在这里插入图片描述
完成以上的这些设置就可以点击开始安装了。在安装期间,根据上面的提示设置root密码(000000)。安装完成之后按提示重启虚拟机。


4、重启之后先点击许可证,同意。
在这里插入图片描述
更改主机名称,之前在开启网络的时候也可以设置。
在这里插入图片描述
最后创建用户。在第一次安装的时候,我是随便创建的,当时想的是所有操作都在root用户下完成。后来发现那样第一不安全、第二也不规范。所以我这里就创建一个名为hadoop的用户名(123456)。
三者都设置完成之后就可以点击完成配置了。


网络设置


1、将VMnet8的子网设置为一个可用的网络端。
在这里插入图片描述
2、设置Windows端和VM在同一个网段内。
在这里插入图片描述
3、最后就是设置Centos系统的ip,我们需要给它一个固定ip,关闭DHCP。不能让他下次打开的时候还得重新设置。
先进入root权限下。根据提示输入密码。

su root

然后进入网络配置。

vim /etc/sysconfig/network-scripts/ifcfg-ens33

将 BOOTPROTO 改成静态,然后增加IP、网关、DNS地址。
在这里插入图片描述
在这里插入图片描述
设置完需要重新启动才能生效。

设置虚拟机的主机映射

如下操作是需要在root权限下才可以使用的。

su root    //进入root权限
vim /etc/hosts

添加ip和名称的对应
在这里插入图片描述


使用Xshell连接虚拟机

1、系统主机映射设置

首先打开文件夹C:\Windows\System32\drivers\etc,
在这里插入图片描述
打开hosts文件,在文件最末尾根据自己的需要添加主机映射。添加完成之后保存。如果无法保存可以另存为 .txt文件,然后将原来的hosts文件删除,再将这个**.txt**文件重命名为hosts.txt,然后将后缀名删除。也可以达到同样的效果。
在这里插入图片描述

2、Xshell连接

按下图操作,因为有了主机的映射,在图中名称和主句的位置直接输入hadoop100。
在这里插入图片描述
输入名称和主机之后不要忙着确定,再点击 用户身份验证输入登录信息。然后就可以确定了。
在这里插入图片描述
确定之后就可以连接到虚拟机了,前提是要保证虚拟机是开启状态。

在这里插入图片描述


其他补丁的安装

需要安装epel-release(是“红帽系”操作系统提供的额外的软件包,相当于一个软件仓库)
此时应该是root用户,否则的话是无法安装的。

//进入root用户
su root
yum install -y epel-release

另外:
如果安装的是最小操作系统,还需要安装net-toolvim

yum install -y net-tools
yum install -y vim

防火墙

一般公司对于内部的访问不需要防火墙,只对于外部的访问开启防火墙。
也就是说在接下来的练习中都属于内部访问,所以可以关闭防火墙。

//关闭防火墙
systemctl stop firewalld
//关闭防火墙自启动
systemctl disable firewalld.service

配置用户权限

给用于大数据集群操作的hadoop用户root权限,以便于后期执行root权限。

//进入配置文档
vim /etc/sudoers

在下图的位置插入图中标注的语句,NOPASSWD 表示每次使用sudo命令的时候不需要输入密码。
在这里插入描述


创建文件夹

在/opt/目录下创建文件夹,用于后期的软件安装。

cd /opt	          //进入/opt/目录

sudo mkdir module      //创建module用于安装软件

sudo mkdir software       //创建software用于存放安装包

sudo chown hadoop:hadoop module/ software/    //修改文件夹的权限

卸载自带的JDK

如果安装的最小系统,就不再需要卸载JDK。

su root
rpm -qa | grep -i java |xargs -n1 rpm -e --nodeps

完成以上操作之后重启虚拟机。

reboot     //重启虚拟机

克隆虚拟机

hadoop是建立在集群之上的,这里我选择再克隆出两台虚拟机。克隆之后需要进行的操作是修改主机名称、更改IP地址。

克隆

克隆之前一定要记得关机。
在这里插入图片描述
注意这里要选择完整的克隆。因为我们需要的并不是链接。
在这里插入图片描述
虚拟机的集群我选择从hadoop102开始命名。以及明确的存放地址。
在这里插入图片描述
在这里插入图片描述

这里克隆了两台,一共有三台虚拟机来组建集群。

克隆配置ip

参考之前的网络配置一节,将两台克隆机的ip分别配置为192.168.146.102 、 192.168.146.103。

vim /etc/sysconfig/network-scripts/ifcfg-ens33

克隆配置名称

名称分别设置为hadoop102和hadoop103,方便管理和记忆。

vim /etc/hostname

克隆机配置完之后需要reboot重启。三台都重启之后可以试着用Xshell一起连接三台设备。

安装hadoop和JDK

准备安装包

在准备阶段我有提到下载这两个应用的压缩包,现在就需要将压缩包放到虚拟机中。使用的还是开始时提到的Xftp文件传输工具。首先使用Xshell连接hadoop100。然后打开之前创建的software文件夹。进入该文件夹之后,点击上面的小绿图标(如果是不同的Xshell版本所对应的位置也许会不同,也可以用Xftp直接连接)
在这里插入图片描述
跳转之后我们只需要将两个压缩包拖进来即可。
在这里插入图片描述

安装JDK

首先我们通过命令以确保两个安装包都存在。
在这里插入图片描述
将JDK安装到/opt/module/目录下。

tar -zxvf jdk-8u281-linux-x64.tar.gz -C /opt/module/

安装之后,来到该目录可以看到安装的JDK。

添加系统环境变量

进入该目录。

cd /etc/profile.d/      (若无法执行该命令,在前面加sudo)

创建文件

sudo vim my_env.sh    

在里面敲入下图的命令,/opt/module/jdk1.8.0_281代表你的JDK安装的目录。可以进到jdk1.8.0_281中用pwd指令来查询。

#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_281
export PATH=$PATH:$JAVA_HOME/bin

在这里插入图片描述

重新加载环境变量

在添加my_env.sh文件之后我们的java还无法使用,需要把刚才添加的变量加载一下。

source /etc/profile

加载完成之后就可以使用java命令了。

安装hadoop

和JDK安装相同。

tar -zxvf hadoop-3.1.4.tar.gz -C /opt/module/

在这里插入图片描述

添加系统环境变量

进入文件。

sudo vim /etc/profile.d/my_env.sh

在里面敲入下图的命令,/opt/module/hadoop-3.1.4代表你的JDK安装的目录。可以进到jdk1.8.0_281中用pwd指令来查询。

#HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-3.1.4
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

在这里插入图片描述

重新加载环境变量

在添加my_env.sh文件之后我们的hadoop还无法使用,需要把刚才添加的变量加载一下。

source /etc/profile

加载完成之后就可以使用hadoop命令了。


hadoop本地测试

进入到hadoop的目录下,创建一个input目录,在该目录下创建一个word.txt文件。

mkdir input
vim input/word.txt

在该文件里保存一些单词。
在这里插入图片描述
回到hadoop目录。输入下面的命令。这里需要注意,input/就是指刚才创建的目录,而没有output目录,所以要在前面加上 ./
这是一个单词计数测试。

hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.4.jar wordcount input/ ./output

在这里插入图片描述

执行完成之后,就会增加一个output目录。output目录下,_SUCCESS是一个成功标记文件,结果文件保存在part-r-00000中。
在这里插入图片描述
打开该文件可以看到计算结果。
在这里插入图片描述

完全分布式运行模式(开发重点)

分析

1、准备3台客户机(关闭防火墙、静态IP、主机名称、IP映射)
2、安装JDK
3、配置环境变量
4、安装hadoop
5、配置环境变量
6、配置集群
7、单点启动
8、配置ssh
9、群起并测试集群

编写集群分发脚本

我们已经为hadoop100配置好了JDK和hadoop,但是还没有为另外的两台客户机进行配置。为了配置起来更方便,将编写一个集群分发脚本,也为之后的创造方便。下面的前两步是引导,第3步是正式开始。

安全拷贝命令scp

scp -r $pdir/$fname $user@$host:$pdir/$fname
scp -r $user@$host:$pdir/$fname $pdir/$fname
scp -r $user@$host:$pdir/$fname $user@$host:$pdir/$fname

远程同步工具rsync

rsync -av $pdir/$fname $user@$host:$pdir/$fname
rsync -av $user@$host:$pdir/$fname $pdir/$fname
rsync -av $user@$host:$pdir/$fname $user@$host:$pdir/$fname

编写脚本

在/home/hadoop/bin 目录下创建xsync文件

[hadoop@hadoop100 ~]$ cd /home/hadoop/
[hadoop@hadoop100 ~]$ mkdir bin
[hadoop@hadoop100 ~]$ cd bin
[hadoop@hadoop100 bin]$ vim xsync

在文件里输入一下内容。

#!/bin/bash

#1.判断参数个数
if [ $# -lt 1 ]
then
    echo Not Enough Arguement!
    exit;
fi

#2.遍历集群所有机器
for host in hadoop102 hadoop103
do
    echo ================= $host ==================
    
    #3.遍历所有目录,挨个发送
    for file in $@
    do
        #4.判断文件是否存在
        if [ -e $file ]
            then
                
                #5.获取父目录
                pdir=$(cd -P $(dirname $file); pwd)

                #6.获取当前文件的名称
                fname=$(basename $file)
                ssh $host "mkdir -p $pdir"
                rsync -av $pdir/$fname $host:$pdir
            else
                echo $file does not exists!
        fi
    done
done

保存退出之后改脚本还没有可执行权限。
在这里插入图片描述
需要用chmod为其增加可执行权限。

[hadoop@hadoop100 bin]$ chmod 777 xsync

在这里插入图片描述

同步脚本使用方法

我们只在hadoop100中安装了JDK和hadoop,现在我们尝试用这个脚本将他同步到hadoop102和hadoop103上。
先来看一下两台客户机的情况。
hadoop100
在这里插入图片描述
使用同步命令。

[hadoop@hadoop100 module]$ xsync hadoop-3.1.4/ jdk1.8.0_281/

根据提示输入yes和密码。
在这里插入图片描述
同步之后就可以在hadoop102和hadoop103上找到了。
在这里插入图片描述

同步环境变量

因为创建环境变量需要root权限,所以前面要加上sudo,而且可执行文件xsync要写明他的路径,因为该文件不是在根目录下,sudo是找不到的。

[hadoop@hadoop100 ~]$ sudo ./bin/xsync /etc/profile.d/my_env.sh

文件同步之后还需要在hadoop102和hadoop103上加载一下。

[hadoop@hadoop102 ~]$ source /etc/profile
[hadoop@hadoop103 ~]$ source /etc/profile

将同步脚本同步到客户机

[hadoop@hadoop100 ~]$ xsync ./bin/xsync

同步完成之后,更改另外两台机器的xsync文件的内容,(主机更改一下)
在这里插入图片描述
在这里插入图片描述
注解:为什么不直接把三个主机都写上?
我之前就是这么干的,但是我发现同步对于本主机的运行还是相对于其他的主机慢一点,这里也许有其他的解决方法,欢迎探讨。

SSH无密登录配置

配置SSH无密登录的作用:应该注意到在使用同步命令时,经常会提示输入对方的密码。使用配置无密登录来简化此过程。
原理:在A服务器上生成密钥对(ssh-key-gen),将公钥分发给需要去无密登录的B服务器,注意私钥一定要保留。 A服务器ssh用私钥加密访问B服务器,B在接收到之后去所有授权的key中找A的公钥,如果有的话直接用公钥A加密恢复。注意:B拥有A的公钥,表示A能无密访问B。
操作:hadoop100可以无密访问hadoop102/103
在hadoop100的home目录下。

[hadoop@hadoop100 ~]$ cd
[hadoop@hadoop100 ~]$ cd .ssh/
[hadoop@hadoop100 .ssh]$ ssh-keygen -t rsa

执行上述的命令之后,系统会提示,需要三次回车。
在这里插入图片描述
查看.ssh中的文件。增加的id_rsa就是其私钥,id_rsa.pub是公钥。
在这里插入图片描述
用下面的命令将公钥拷贝到想要无密登录的服务器上。根据提示输入对应的密码。(有个奇葩的设定就是需要把公钥也要给自己拷贝一份)

[hadoop@hadoop100 .ssh]$ ssh-copy-id hadoop100
[hadoop@hadoop100 .ssh]$ ssh-copy-id hadoop102
[hadoop@hadoop100 .ssh]$ ssh-copy-id hadoop103

完成这些操作之后hadoop100可以无密ssh其他服务器,但是其他的服务器还不行,需要将上述的操作也在其他的服务器上操作。这里省略步骤。

说明:以上的ssh配置是针对的用户,也就是只对hadoop用户配置了ssh,而其他用户(比如root)在使用ssh时仍然需要密码,如果有需要的话,可以给每个用户都配置无密登录。

集群配置

3台客户机配置规划

hadoop100hadoop102hadoop103
HDFSNameNode、DataNodeDataNodeSecondaryNameNode、DataNode
YARNNodeManagerNodeManager、ResourceManagerNodeManager

核心文件配置

core-site.xml
[hadoop@hadoop100 ~]$ cd $HADOOP_HOME/etc/hadoop
[hadoop@hadoop100 hadoop]$ vim core-site.xml

在<configuration>之间添加下面的代码。
在这里插入图片描述

<!-- 指定NameNode的地址 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop100:8020</value>
    </property>
    <!-- 指定hadoop的数据的存储目录 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/module/hadoop-3.1.4/data</value>
    </property>
hdfs-site.xml
[hadoop@hadoop100 hadoop]$ vim hdfs-site.xml

在<configuration>之间添加下面的代码。

    <!-- nn web端访问地址 -->
    <property>
        <name>dfs.namenode.http-address</name>
        <value>hadoop100:9870</value>
    </property>
    <!-- 2nn web端访问地址 -->
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>hadoop103:9868</value>
    </property>
yarn-site.xml
[hadoop@hadoop100 hadoop]$ vim yarn-site.xml

在<configuration>之间添加下面的代码。

    <!-- 虚拟内存不检查 -->
    <property>
        <name>yarn.nodemanager.vmem-check-enabled</name>  
        <value>false</value>
    </property>
    <!-- 指定MR走shuffle -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <!-- 指定ResourceManager.hostname -->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>hadoop102</value>
    </property>
<!-- 环境变量继承 -->
    <property>
        <name>yarn.nodemanager.env-whitelist</name>
        <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
    </property>
MapReduce配置文件
[hadoop@hadoop100 hadoop]$ vim yarn-site.xml

在<configuration>之间添加下面的代码。

    <!-- 指定MapReduce程序运行在Yarn上 -->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>

同步配置文件

[hadoop@hadoop100 etc]$ xsync hadoop/

群起集群

配置workers

[hadoop@hadoop100 ~]$ cd /opt/module/hadoop-3.1.4/
[hadoop@hadoop100 hadoop-3.1.4]$ cd etc/hadoop/
[hadoop@hadoop100 hadoop]$ vim workers 

删除原有内容,只输入一下三条信息。
在这里插入图片描述
同步workers

[hadoop@hadoop102 hadoop]$ xsync workers

启动集群

1、如果集群是第一次启动,需要初始化hdfs。

[hadoop@hadoop100 hadoop-3.1.4]$ hdfs namenode -format
[hadoop@hadoop100 hadoop-3.1.4]$ sbin/start-dfs.sh

2、在准备开始ResourceManager的客户机上启动yarn。

[hadoop@hadoop102 hadoop-3.1.4]$ start-yarn.sh

3、使用jps来查看启动情况。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
可以和3台客户机配置规划进行对比,看是否相同。
至此集群启动成功。

集群测试

上传文件到集群

1、在web端查看集群服务器的情况。
输入地址hadoop100:9870
在这里插入图片描述
然后浏览文件系统。
在这里插入图片描述

在这里插入图片描述
可以看到此时在该服务器系统中是没有文件的。

2、在集群服务器的根目录下创建一个文件夹。

[hadoop@hadoop100 hadoop-3.1.4]$ hadoop fs -mkdir /input

在这里插入图片描述
刷新原来的网页,可以看到已创建目录input。接下来再把之前用来测试的word.txt文件传入input中。

[hadoop@hadoop100 hadoop-3.1.4]$ hadoop fs -put $HADOOP_HOME/input/word.txt /input
// -put代表上传  $HADOOP_HOME其实代表就是hadoop的这个程序目录,也就是/opt/module/hadoop-3.1.4/
//上传函数是,前面是要上传的文件,后面是上传到的地址。

点进去就可以看到了。还可以查看里面的内容。
在这里插入图片描述
点击Download可以直接下载下来。
在这里插入图片描述

历程测试

输入地址hadoop102:8088查看yarn运行情况。
在这里插入图片描述
可以看到此时是没有程序在执行的,现在我们来执行一个历程。

[hadoop@hadoop100 hadoop-3.1.4]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.4.jar wordcount /input /output

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这里可以看到和本地测试的结果一样。

结束

到此写完了我第一次操作Hadoop。其中不乏有很多问题,所幸都一一解决了。

  • 4
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Hadoop是一个分布式计算框架,而Zookeeper是一个分布式协调服务。在Hadoop集群中,Zookeeper用于协调Hadoop集群中的各个节点,以确保它们之间的通信和同步。下面是Hadoop安装与配置Zookeeper的步骤: 1.安装Java环境 在安装Hadoop和Zookeeper之前,需要先安装Java环境。可以从Oracle官网下载Java安装包,然后按照提示进行安装。 2.安装Hadoop 下载Hadoop安装包并解压缩,然后将解压缩后的文件夹移动到指定的目录下。接下来,需要编辑Hadoop的配置文件,包括core-site.xml、hdfs-site.xml和mapred-site.xml等文件,以便将Hadoop配置为适合您的环境。 3.安装Zookeeper 下载Zookeeper安装包并解压缩,然后将解压缩后的文件夹移动到指定的目录下。接下来,需要编辑Zookeeper的配置文件,包括zoo.cfg等文件,以便将Zookeeper配置为适合您的环境。 4.启动Zookeeper 在启动Zookeeper之前,需要确保已经启动了Hadoop集群。然后,可以使用以下命令启动Zookeeper: ``` bin/zkServer.sh start ``` 5.配置Hadoop使用Zookeeper 在Hadoop的配置文件中,需要添加以下配置,以便Hadoop可以使用Zookeeper: ``` <property> <name>ha.zookeeper.quorum</name> <value>zk1.example.com:2181,zk2.example.com:2181,zk3.example.com:2181</value> <description>A list of ZooKeeper servers used by the ZKFailoverController.</description> </property> ``` 6.测试Zookeeper 可以使用以下命令测试Zookeeper是否正常工作: ``` bin/zkCli.sh -server zk1.example.com:2181 ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值