Ubuntu20.04安装JDK8,部署Hadoop并实现伪分布式模式

一、Hadoop安装模式简介

Hadoop有三种安装模式,分别为单机模式、伪分布式模式、完全分布式模式。三者对比可以通过下表看出

模式概念特点用途

单机模式

Hadoop默认模式

1.没有分布式文件系统HDFS

2.MapReduce处理的是本地Linux的文件数据

一般仅用于本地MapReduce程序的调试

 伪分布模式

是在单机上,模拟一个分布式的环境

具备Hadoop的主要功能

常用于调试程序

完全分布式模式

也叫集群模式,是将Hadoop运行在机器上,各个机器按照相关配置运行相应的hadoop守护进程

在多台机器上运行,是真正的分布式环境

常用于生产

由于是在自己的笔记本上进行实验,所以选择伪分布式模式较好。

二、本文配置环境

三、Ubuntu安装

(假设你已经安装完成VMware)

1.点击新建虚拟机,这里弹窗选择典型安装即可。

2.选择安装程序光盘映像文件,浏览到在你磁盘上的iso文件。当然也可以选择稍后安装操作系统,但是在创建好虚拟机之后依然会让你选择映像文件。

3. 输入你的Ubuntu虚拟机名字以及登录密码。

4.选择你的虚拟机要放在你的硬盘上的位置。(这里我为了统一将默认名称更改了)

5.分配你的虚拟机磁盘容量。将磁盘存储为单过或者多个文件都是可以的。这个只对于过去的老计算机会有较大的差别。

6.自定义硬件设备。这一步建议将内存、CPU翻倍,将网络适配器改为NAT模式,这样开机便可以自动联网,方便操作,日后再改为桥接模式。

7.完成。点击完成,等待虚拟机复制文件,打开即可。

8.安装open-vm-tools,实现复制、粘贴,可拖拽文件。

  • 按Ctrl+Alt+T打开命令终端。
  • 更新下系统源:sudo apt update
  • 安装open-vm-tools,命令:sudo apt install open-vm-tools
  • 安装 open-vm-tools-desktop 以支持双向拖放文件,命令:sudo apt install open-vm-tools-desktop
  • 查看是否安装成功open-vm-tools,执行命令:①cd /etc/init.d   ②ls  (其中/etc目录存放着各种系统配置文件,init.d文件是随系统启动的服务程序)

写在前面:(1)Ubuntu中的操作都是和文件打交道,很多时候做错了不必重装!

                  (2)Ubuntu中命令行中的 ~/ 等于 /home/用户名/。

                  (3)你打开文件系统看到的,它等于 ~/ 等于 /home/用户名/。

四、JDK安装

1.在家(Home)目录下新建software和server文件夹,其中software用于存储JDK与Hadoop的压缩包,server用于存放两者的解压后文件。

可以使用命令:

也可以点击右上角的三个横线中的New Folder:

新建好之后的Home目录:

2.在Windows系统内点击你下载好的JDK文件复制,回到Ubuntu中的software文件夹,右键单击paste。也可以使用拖拽,直接从Windows系统中拖到software文件夹。

我这里已经将JDK及Hadoop一同拷贝过来了:

3.将JDK解压到server目录下,在software文件夹下使用命令:tar -xzvf jdk-8u281-linux-x64.tar.gz -C ..//server

  • -x:从压缩的文件中提取文件
  • -z:支持gzip解压文件
  • -v:显示操作过程
  • -f:指定压缩文件
  • -C:切换到指定目录
  • ../后面一定要再多一个斜杠,或者可以这样/home/master/server

4.配置环境变量

  • 命令:gedit ~/.bashrc (使用gedit对.bashrc文件进行编辑相比vim更好用,此文件主要保存个人的一些个性化设置,如命令别名、路径等。)
  • 将下列配置放在文件的最后面:
    #set oracle jdk environment
    export JAVA_HOME=/home/master/server/jdk1.8.0_281 #这里要注意目录要换成自己解压的jdk目录
    export JRE_HOME=${JAVA_HOME}/jre  
    export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib  
    export PATH=${JAVA_HOME}/bin:$PATH 
    保存退出。
  • 执行命令:source ~/.bashrc (执行此文件中的配置)
  • 测试:java -version (若安装成功,则会在终端输出当钱JDK版本)

     

五、Hadoop安装

1.前两步与JDK安装过程一样,需要将Hadoop压缩文件放在software文件夹下,并解压到server文件夹中。

  • software文件夹下执行解压命令:tar -xzvf hadoop-2.7.4.tar.gz -C ..//server

2.配置环境变量

  • 命令:gedit ~/.bashrc
  • 将下列配置放在文件的最后面:
    #set hadoop environment
    export HADOOP_HOME=/home/master/server/hadoop-2.7.4 #这里要注意目录要换成自己解压的hadoop目录
    export CLASSPATH=$($HADOOP_HOME/bin/hadoop classpath):$CLASSPATH
    export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
    export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
    export JAVA_LIBRARY_PATH=${HADOOP_HOME}/lib/native #不加这一行在后面启动HDFS服务的时候会有警告
    保存退出。
  • 执行命令:source ~/.bashrc
  • /home/master(你自己的用户名,在Ubuntu中不显示,可以理解为打开看到的Home目录就已经到此目录下了)/server(你自己的解压目录)/hadoop-2.7.4/etc/hadoop/hadoop-env.sh文件中,修改:JAVA_HOME=/home/master/server/jdk1.8.0_28(也就是你自己的JDK解压目录),保存退出。

      

  • 测试:hadoop version (若安装成功,则会在终端输出当前Hadoop版本)

      

  • 进一步测试功能:使用命令:mkdir ~/input 创建input文件夹,再使用命令:gedit ~/input/data.txt 建立一个data.txt文件。在此文件中可以打入一行Hello world!后保存退出。
  • 在终端输入命令:cd ~/server/hadoop-2.7.4/share/hadoop/mapreduce 切换到mapreduce目录下。
  • 执行命令:hadoop jar hadoop-mapreduce-examples-2.7.4.jar wordcount ~/input/data.txt ~/output (wordcount计算每个单词出现的次数)
  • 上一条命令会在home目录下新建一个output目录,点开后会发现有四个文件,我们双击其中的part-r-00000可以看到其中的统计数据。

      

六、伪分布式模式

(一)安装SSH服务器端并克隆虚拟机

1.改变Ubuntu的镜像源:Settings(可以通过单击右上角的关机图标找到) —— About —— Software Updates —— Ubuntu Software —— Download from —— China —— 单击mirrors.tuna.tsinghua.edu.cn —— 单击choose server —— 输入密码后点击Authenticate —— close(revert为恢复上次选择)—— Reload(即为更新系统源)

2.更新源:打开终端,执行命令:①sudo apt update   ②sudo apt upgrade (这中间会有是否继续,输入y)

3.下载SSH:执行命令:sudo apt-get install openssh-server (中间有一步是否继续,输入y。)(SSH有客户端和服务端,客户端默认都自带的,只需要装服务端即可。)

4.测试:执行命令:dpkg -l|grep ssh (-后为字母l在之后为竖线|)。出现下面两个即为成功。

5.克隆两台虚拟机:在虚拟机关机状态下,在VMware左侧库中右键单击你的虚拟机(我的为master) —— 管理 —— 克隆 —— 虚拟机中的当前状态 —— 创建完整克隆 —— 虚拟机的名称,我自己为bigdata01和bigdata02 —— 等待完成即可。

6.接下来的步骤会涉及到主机名,注意:Linux的主机名和用户名不是一个东西,在命令终端输入命令时,@前面的为用户名,@后为主机名,此图中为用户名和主机名重复了。所以你需要通过:Settings —— About —— Device Name 将三台Ubuntu的主机名改为这样:

7.将三台主机全部开机,查看每台主机的IP地址。命令:ifconfig,如果提示命令找不到,则因为未安装网络工具,先执行命令:sudo apt install net-tools即可。方框中即为IP地址:

获取三台主机的IP地址后,将三台主机的IP地址写入到每台虚拟机的hosts中:

  • 运行命令:su(进入root用户)(如果提示授权失败,则运行命令:sudo passwd root 修改root密码即可)
  • 运行命令:gedit /etc/hosts (编辑hosts这一负责域名解析的文件)
  • 在此文件中插入三台主机的IP及每台主机的主机名,三台均执行此操作,这样方便后面的操作,修改之后可以ping一下看看是否成功。

(二)设置免秘钥登录

1.在三台虚拟机中执行命令:ssh-keygen -t rsa。执行期间一Enter即可,执行完毕后会在Home目录下生成一个.ssh文件夹(如果看不到,在文件系统中右上角三条横线内开启显示隐藏文件即可),文件夹中的id_rsa存放着私钥,id_rsa.pub存放着公钥,我们下一步就是把各个节点的公钥拷贝到master节点上。

2.将另外两台节点的数据拷贝到master这一中枢节点上。在master虚拟机中执行如下命令:

#将bigdata01主机的公钥拷贝到master上,其中“bigdata01”为另一台主机名,冒号后为公钥在“bigdata01”主机上的存放地址,第二个空格后为存放在“master”主机上的目录及文件名
scp bigdata01:~/.ssh/id_rsa.pub ~/.ssh/id_rsa.pub.01
#将bigdata02主机的公钥拷贝过来
scp bigdata02:~/.ssh/id_rsa.pub ~/.ssh/id_rsa.pub.02

3.在中枢节点,即我的master主机上,将所有主机的公钥都添加到authorized_keys文件(在Home目录下的.ssh文件夹中)中,执行命令:

#将本机即master的公钥放进authorized_keys文件中
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
#将bigdata01主机的公钥放进文件中
cat ~/.ssh/id_rsa.pub.01 >> ~/.ssh/authorized_keys
#将bigdata02主机的公钥放进文件中
cat ~/.ssh/id_rsa.pub.02 >> ~/.ssh/authorized_keys

#删除bigdata01与bigdata02的公钥
rm ~/.ssh/id_rsa.pub.01
rm ~/.ssh/id_rsa.pub.02

4.将中枢节点中的authorized_keys分发给所有从节点。这样每个节点都可以自由免密登录任何其他节点。执行命令:

#将authorized_keys文件发给bigdata01主机,也要放在Home目录下的.ssh文件夹中
scp ~/.ssh/authorized_keys bigdata01:~/.ssh/
#将authorized_keys文件发给bigdata02主机
scp ~/.ssh/authorized_keys bigdata02:~/.ssh/

5.验证测试,在master中执行命令:ssh bigdata01。第一红框为授权,就是添加到已知列表,下次不会再出现,第二个红框出现即为配置成功,若失败会在二者之间让你输入用户密码。

   断开连接执行命令:logout。

(三)修改配置文件

   所需修改的配置文件都在 /home/master(你的用户名)/server(你的解压目录)/hadoop-2.7.4/etc/hadoop 目录下。

1.配置文件:core-site.xml

/home/master/server/hadoop-2.7.4(你的hadoop解压目录)/tmp 此文件夹需要自己创建。

<configuration>
        <property>
             <name>hadoop.tmp.dir</name>
             <!-- hadoop.tmp.dir指出FSImage和Edits的存放位置 -->
             <!-- 如果在hdfs-site.xml中设定了dfs.namenode.name.dir的值,则hadoop.tmp.dir无效 -->
             <value>/home/master/server/hadoop-2.7.4/tmp</value> 
             <!-- 这个目录应该替换成你自己的解压目录下,注意tmp文件夹需要自己创建 -->
        </property>
        <property>
             <name>fs.defaultFS</name>
             <!-- fs.defaultFS确定哪个节点充当NameNode,以及访问HDFS的端口。即配置NameNode地址,9000是RPC通信端口 -->
             <value>hdfs://192.168.60.129:9000</value>
             <!-- 192.168.60.129是我的nameNode也即master主机的IP,替换成你自己的 -->
        </property>
</configuration>

2.配置文件:hdfs-site.xml

/home/master/server/hadoop-2.7.4(你的hadoop解压目录)/opt 此文件夹需要你自己创建

<configuration>

	<property>  
     	    <name>dfs.replication</name>
     	    <!-- "dfs.replication"给出副本个数 -->
     	    <value>2</value>  
 	</property>  
	<property>  
    	    <name>dfs.namenode.name.dir</name>
    	    <!-- "dfs.namenode.name.dir" 给出fsImage、edits存放在哪 -->
    	    <value>/home/master/server/hadoop-2.7.4/opt/name</value>
    	    <!-- "/home/master/server/hadoop-2.7.4/opt" 这个目录需要你自己创建 -->
	</property>  
 	<property>  
    	    <name>dfs.datanode.data.dir</name>  
    	    <value>/home/master/server/hadoop-2.7.4/opt/data</value>  
 	</property>  
 	<property>
   		<name>dfs.namenode.secondary.http-addr</name>
   		<!-- 指出哪个节点充当secondaryNameNode -->
   		<value>192.168.60.129:50059</value>
                <!-- 同样是master的IP,但是更换一个端口 -->
	</property>

</configuration>

3.配置文件mapred-site.xml

有可能没有这个文件,但是你会看到mapred-site.xml.template文件,当前目录下使用命令:cp mapred-site.xml.template mapred-site.xml 这样在对其进行配置。

<configuration>

	<property>  
	     <name>mapreduce.framework.name</name>  
	     <value>yarn</value>
	     <!-- value值配置为yarn表示集群模式,配置为local为本地模式 --> 
	</property>

</configuration>

4.配置文件yarn-site.xml

注意有一处需要执行命令得到。

<configuration>

	<!-- Site specific YARN configuration properties -->
	<property>
    	    <name>yarn.resourcemanager.hostname</name>
		<!-- "yarn.resourcemanager.hostname"指出哪个节点充当resourcemanager -->
    	    <value>192.168.60.129</value>
            <!-- 可以写IP地址,如果配置了hosts文件也可以写对应的主机名,例如我可以写master -->
	</property>
	<property>
    	    <name>yarn.nodemanager.aux-services</name>
		<!-- "yarn.nodemanager.aux-services"指出mapreduce执行所需要的附件 -->
    	    <value>mapreduce_shuffle</value>
	</property>
	<property>
    	    <name>yarn.application.classpath</name>
    	    <value>*****</value>
            <!-- ****** 处需要执行命令:hadoop classpath 将执行结果粘贴在*****处 -->
	</property>

</configuration>

5.配置文件slaves

在此文件中添加你的从节点IP或者hosts中对应的主机名

6.分发配置文件

在终端执行命令:

#将配置环境基础设置分发到bigdata01和bigdata02主机上
scp ~/.bashrc  bigdata01:~/
scp ~/.bashrc  bigdata02:~/

#将JDK和Hadoop解压目录整体分发到bigdata01和bigdata02主机上,注意要与原来的解压目录在同样位置
scp –r server bigdata01:~/
scp –r server bigdata02:~/

7.启动与测试

    在master主机上进行操作:

  • HDFS格式化

      执行命令:hdfs namenodeformat

      出现红框即为成功

  • 启动Hadoop集群

       首先切换到之前在六、(三)配置文件的目录,可以通过执行命令:cd ~/server/hadoop-2.7.4/etc/hadoop

       启动集群命令:start-dfs.sh

  • 启动yarn

       执行命令:start-yarn.sh

  • 使用jps命令查看进程

       执行命令:jps

     最后的stop-dfs.sh为关闭分布式服务。

    在bigdata01与bigdata02主机上进行操作:

  • 执行命令:jsp

      

七、验证服务

  • 打开浏览器输入 192.168.60.129:50070 查看节点信息

  • 打开浏览器输入192.168.60.129:8088查看集群分布状态

八、总结

配置环境的过程很枯燥,也不是半天一天就能完成的,但是要知道Linux一切皆文件,所以有些时候并不需要全部卸载重装。

写这个博客的初衷也是记录自己的一个小工程吧。

 

  • 8
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值