基于Ubuntu系统下的Hadoop 环境搭建(新手可尝)

Hadoop 环境搭建

1、安装虚拟机

在一切行动的前提,我们需要先安装好虚拟机,毕竟是供我们学习用的,因此我们需要通过虚拟机利用Linux系统来实现我们的Hadoop环境。

安装虚拟机步骤:
(1)下载 VMware 安装包。到 VMware® Workstation Pro 官网,选择对应的版本 进行下载。本教程选择的版本是 VMware® Workstation 14 Pro。

(2)安装 VMware。双击安装文件,按提示操作至安装完成。

(3)新建虚拟机。打开 VMware 软件,单击主页的【创建新的虚拟机】按钮开始 创建虚拟机,如图 2-1 所示。
在这里插入图片描述
单击“自定义(高级)”选项,如图 2-2 所示,并单击【下一步】按钮。 选择“虚拟机硬件兼容性”,默认即可,直接单击【下一步】按钮,如图 2-3 所示。
在这里插入图片描述
选择“稍后安装操作系统”,单击【下一步】按钮,如图 2-4 所示。 选择“客户机操作系统”,单击选中“Linux(L)”,如图 2-5 所示,再单击【下 一步】按钮。
在这里插入图片描述
设置“虚拟机名称(例如:Ubuntu)”,并选择虚拟机的安装位置,最好选择一个 有空余空间的磁盘分区来安装,如图 2-6 所示,再单击【下一步】按钮。 设置“处理器配置”,保持默认即可,并单击【下一步】按钮,如图 2-7 所示。
在这里插入图片描述
分配虚拟机内存(内存建议大于或等于 1024MB),然后单击【下一步】按钮,如 图 2-8 所示。

设置“网络类型”,单击“使用网络地址转换(NAT)”,并单击【下一步】按钮, 如图 2-9 所示。

选择“I/O 控制器类型”,使用默认选项“LSI Logic”,并单击【下一步】按钮, 如图 2-10 所示。

选择“磁盘类型”,使用默认选项“SCSI”,并单击【下一步】按钮,如图 2-11 所示。

选择“磁盘”,选择“创建新虚拟磁盘”,并单击【下一步】按钮,如图 2-12 所 示。

指定“磁盘容量”,建议为 20GB 或更大,并单击【下一步】按钮,如图 2-13 所示。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
指定“磁盘文件”,保留默认的位置或单击【浏览】按钮选择其他位置,并单击【下 一步】按钮,如图 2-14 所示。 单击【完成】按钮,完成虚拟机的安装,如图 2-15 所示。
在这里插入图片描述

2.安装 Ubuntu 操作系统

虽然Windows和Unix以及Linux都支持Hadoop的开发,但是只有Linux系统是支持Hadoop的生产,因此我们需要利用Linux来配置我们的Hadoop,上面我们已经把虚拟机安装好了,同时在上面也介绍了安装Ubuntu操作系统的一小步步骤,VMware以及Ubuntu的镜像文件都已打包在点我!!

提取码是:rmne

接下来我们就正式进入安装Ubuntu系统的过程:
(1)下载 Ubuntu ISO 镜像文件。到 Ubuntu 官网选择对应的版本进行下载。本教程选择的版本是 ubuntu-16.04.4-desktop-amd64.iso。
(2)打开 VMware Workstation Pro 软件,单击左侧栏的虚拟机(如 Ubuntu),再 单击右侧的“编辑虚拟机设置”,如图 2-16 所示。
图 2-16 编辑虚拟机设置
选择“CD/DVD(SATA)”,连接选择“使用 ISO 映像文件”,单击【浏览】按钮, 选择下载的 ISO 镜像文件,单击【确定】按钮,如图 2-17 所示。
在这里插入图片描述
单击“开启此虚拟机”,然后根据提示安装至完成,如图 2-18 所示。
在这里插入图片描述

3、关闭防火墙

如果不关闭 Ubuntu 操作系统的防火墙,会出现以下几种情况。
(1)无法正常访问 Hadoop HDFS 的 Web 管理页面。
(2)会导致后台某些运行脚本(例如后面要学习的 HIVE 程序)出现假死状态。
(3)在删除和增加节点的时候,会让数据迁移处理时间更长,甚至不能正常完成 相关操作。 所以我们要关闭防火墙。关闭防火墙的命令如下。

$ sudo ufw disable
 Firewall stopped and disabled on system startup

查看防火墙状态,状态为“不活动”,说明防火墙已经关闭。

$ sudo ufw status 
Status: inactive

注意:本教程使用的命令以“$”开头时,代表当前用户为普通用户;“#”开头代表 当前用户为 root 用户。命令行中的“$”或者“#”是不需要输入的,例如,“$ sudo ufw status”只需要在终端命令行输入“sudo ufw status”即可。

4、 SSH 安装

SSH 是 Secure Shell 的缩写,它是一种建立在应用层基础上的安全协议。SSH 是目 前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以 有效防止远程管理过程中的信息泄露。

SSH 由客户端(openssh-client)软件和服务端(openssh-server)软件组成。在安 装 SSH 服务时,需要 Ubuntu 操作系统连接互联网。

(1)安装 SSH 客户端软件

Ubuntu 操作系统默认安装有 SSH 客户端软件,通过以下命令查看是否已安装,如 果返回包含“openssh-client”的字样,说明已经安装 SSH 客户端软件。

$ sudo dpkg -l | grep ssh

否则,用以下命令安装。

$ sudo apt-get install openssh-client

(2)安装 SSH 服务端软件

Ubuntu 操作系统默认没有安装 SSH 服务端软件,安装命令如下。

$ sudo apt-get install openssh-server

重启 SSH 服务,命令如下。

$ sudo /etc/init.d/ssh restart

5、 安装 Xshell 及 Xftp

采用 Xshell 可以通过 SSH 协议远程连接 Linux 主机,采用 Xftp 可实现安全地在 UNIX/Linux 和 Windows 之间传输文件。可打开 NetSarang 官网下载最新的 Xshell 及 Xftp 免费版本。本书采用的是 Xshell 6.0 及 Xftp 6.0 免费版本。安装 Xshell 和 Xftp 较简 单,只需要双击安装文件默认安装即可。

利用xftp6可以进行windows与linux文件传输,比如在windows系统安装了jdk1.8要上传到linux系统,则需要用到xftp6,(前提也是xftp6要连接到Linux)

安装 Xshell 及 Xftp可以在上面提供的链接下载,此处再给出链接提取码为:rmne

如果觉得云盘下载实在是太麻烦了,也可以选择在这里下载

安装完 Xshell 及 Xftp 后,打开 Xshell,选中左侧所有会话,单击右键,选择【新建】 -【会话】,如图 2-19 所示。

在这里插入图片描述
在连接中,配置名称及主机。其中,主机是上面安装的 Ubuntu 操作系统的 IP 地址, 如图 2-20 所示。
在这里插入图片描述
tips:如果要查看 Ubuntu 操作系统的 IP 地址,可采用如下命令。

$ ifconfig

例如,显示如下结果,表示 Ubuntu 操作系统的 IP 地址是“192.168.30.128”。目 前的 IP 地址是自动获取的,建议读者参考相关资料将 IP 地址设置为固定的。

ens160 Link encap:Ethernet HWaddr 00:0c:29:bf:e1:df 
     inet addr:192.168.30.128 Bcast:192.168.30.255 Mask:255.255.255.0

再在 Xshell 会话配置中,配置 Ubuntu 操作系统的登录用户名和密码,单击【连接】 按钮即可开始连接上前面安装好 Ubuntu 操作系统,如图 2-21 所示。
在这里插入图片描述

6、 安装 JDK

Hadoop 是基于 Java 语言开发的,运行 Hadoop 需要安装 JDK(Java Development Kit)。
(1)下载安装包并上传到 Linux 系统 JDK 安装包需要在 Oracle 官网下载。本书采用的 JDK 安装包为 jdk-8u171-linux-x64.tar.gz。将安装包下载至 Windows 本地目录下,例如 D:\soft。在 Xshell 软件中,单击上方的绿色小图标,打开 Xftp,如图 2-22 所示。
在这里插入图片描述
在弹出的 Xftp 窗口中,把 JDK 的安装包上传到 Ubuntu 系统~目录下,如图 2-23 所示。
在这里插入图片描述
上传成功后,在 Ubuntu 操作系统下通过 ls 命令查看,结果如下。

$ ls ~ 
jdk-8u171-linux-x64.tar.gz

(2)解压安装包到~目录下

$ cd ~ 
$ tar -zxvf jdk-8u171-linux-x64.tar.gz

(3)建立 JDK 软链接,以方便后续使用

$ ln -s jdk1.8.0_171 jdk

(4)配置 JDK 环境变量

$ vi ~/.bashrc        /*vi 为打开文件命令

在文件内容的末尾添加如下代码(注意:等号两侧不要有空格)。

export JAVA_HOME=~/jdk 
export JRE_HOME=${JAVA_HOME}/jre 
export CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:. 
export PATH=${JAVA_HOME}/bin:$PATH

熟悉Linux操作命令的童鞋已经开始操作起来了,当然如果对于这些操作命令不熟悉的同学也不要怕,可以点击这个链接,学习一下Linux的相关操作命令,再接着进入配置环境的操作。
(5)使配置生效

$ source ~/.bashrc

(6)检验是否安装成功

$ java –version

出现如下版本信息表示 JDK 安装成功。

java version "1.8.0_171" 
Java(TM) SE Runtime Environment (build 1.8.0_171-b11) 
Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)

7、安装 hadoop

Hadoop的三种启动模式分别为
1.单机模式(独立模式)(Local或Standalone Mode)
2.伪分布式模式(Pseudo-Distrubuted Mode)
3.全分布式集群模式(Full-Distributed Mode)

对于我们学习使用的话,其实我们只需要配置伪分布式来模拟一个小规模的集群就可以的了。伪分布式其实是完全分布式的一种特例,但它只有一个节点。下面开始安装Hadoop的伪分布式吧!

(1)修改主机名

查看 Ubuntu 操作系统的主机名,参考下面的命令。

$ hostname 
hadoop-virtual-machine

为了安装方便和易于记忆,将这台主机的主机名修改为 node1。
用 vi 命令编辑/etc/hostname 文件。

$ sudo vi /etc/hostname

将原有内容删除,添加如下内容。

node1

重启 Ubuntu 操作系统,使修改生效。

$ sudo reboot

(2)映射 IP 地址及主机名

先查看 Ubuntu 操作系统的 IP 地址,可参考 上文配置jdk的教程。比如,这里查到的 IP 地址 是“192.168.30.128”。

修改/etc/hosts 文件。

$ sudo vi /etc/hosts

在文件末尾添加一下内容,下面的 IP 地址根据实际的 IP 地址修改。

192.168.30.128     node1

(3)免密登录设置
如果只需要本机登录别的主机,把本机当作客户端,则在本机安装 SSH 客户端 (openssh-client)软件即可。如果要让别的主机(包括本机自己)登录本机,也就是 说把本机当作服务端,就需要安装 SSH 服务端(openssh-server)软件。Ubuntu 操作 系统默认没有安装 SSH 服务端软件,请参考 2.1.4 进行安装。

登录其他主机时,通常需要输入密码。如果要让普通用户(如 hadoop)无需输入 密码就可以登录集群内的主机,即实现免密登录,通常的做法是在本机创建一个密钥对 (包括公钥和私钥),并将公钥发送给集群内所有的主机进行认证,即可实现免密登录。

伪分布式只有一个节点,本机同时扮演着客户端和服务端的角色。在 SSH 客户端软 件和 SSH 服务端软件都安装好的前提下,进行以下免密登录设置。

(1)生成密钥对

$ ssh-keygen -t rsa

其中,rsa 表示加密算法,键入上面一条命令后连续敲击三次回车键,系统会自动在~/.ssh 目录下生成公钥(id_rsa.pub)和私钥(id_rsa),可通过命令$ ls ~/.ssh 查看。

$ ls ~/.ssh id_rsa id_rsa.pub

(2)追加公钥

我们以本机登录本机自己为例(连接本机),将公钥追加到~/.ssh/authorized_keys 文件中。

$ cat .ssh/id_rsa.pub >> .ssh/authorized_keys 
$ chmod 600 .ssh/authorized_keys

通过命令$ ls ~/.ssh 查看,认证文件 authorized_keys 已经生成。读者如果感兴趣, 可以通过 cat 命令查看 authorized_keys 内容是否包含有 id_rsa.pub 的内容。

$ ls ~/.ssh 
authorized_keys id_rsa id_rsa.pub

(3)免密登录验证

执行命令 ssh node1,首次登陆需要输入“yes”,第二次登录就不需要输入任何信 息了。注意命令行路径的变化。以下例子免密登录之前的路径是“~/.ssh”,登录后的 路径是“~”。

hadoop@node1:~/.ssh$ ssh node1
Welcome to Ubuntu 16.04.4 LTS (GNU/Linux 4.13.0-36-generic x86_64)
* Documentation:    https://help.ubuntu.com
* * Management:     https://landscape.canonical.com
250 packages can be updated.
134 updates are security updates.
Last login: Sat Jul 14 21:19:26 2018 from 192.168.30.128

hadoop@node1:~$

用命令$ exit 退出 node1 登录,路径由 “~” 变为了登录前的“~/.ssh”。

hadoop@node1:~$ exit 
logout 
Connection to node1 closed. 
hadoop@node1:~/.ssh$

(4)设置 Hadoop 配置文件

安装 Hadoop 伪分布式模式,总共有 5 个文件需配置,它们分别是 hadoop-env.sh、 core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml。这些配置文件的路径均 在${HADOOP_HOME}/ etc/hadoop 目录下。

(4_1)配置 hadoop-env.sh

进入 Hadoop 配置文件所在目录,修改 hadoop-env.sh 文件。

$ cd ~/hadoop/etc/hadoop 
$ vi hadoop-env.sh

找到 export JAVA_HOME 一行,把行首的#去掉,并按实际修改 JAVA_HOME 的值。

# The java implementation to use. 
export JAVA_HOME=/home/hadoop/jdk

注意:JAVA_HOME=/home/hadoop/jdk,其中的 hadoop 为用户名,注意要按实际 修改。

(4_2)配置 core-site.xml

用 vi 命令打开 core-site.xml。

$ vi core-site.xml

参考以下内容进行修改,修改完保存退出。

<?xml version="1.0" encoding="UTF-8"?> 
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration>
   <property> 
       <name>fs.defaultFS</name> 
       <value>hdfs://node1:8020</value> 
       <!-- 以上ip 地址或主机名要按实际情况修改 --> 
   </property> 
   <property> 
      <name>hadoop.tmp.dir</name> 
      <value>/home/hadoop/hadoop/tmp</value> 
   </property> 
</configuration>

配置说明: fs.defaultFS 属性指定默认文件系统的 URI 地址,一般格式为“hdfs://host:port”。 其中,host 可以设置为 Ubuntu 操作系统的 IP 地址以及主机名称中的任意一个,这里 设置为主机名;port 如果不配置,则使用默认端口号 8020。

hadoop.tmp.dir 指定 Hadoop 的临时工作目录,设置为/home/<用户 名>/hadoop/tmp,<用户名>请根据实际情况修改。注意:一定要配置 hadoop.tmp.dir, 否则默认的 tmp 目录在/tmp 下,重启 Ubuntu 操作系统时 tmp 目录下的 dfs/name 文件 夹会被删除,造成没有 NameNode。

(4_3)配置 hdfs-site.xml

用 vi 命令打开 hdfs-site.xml。

$ vi hdfs-site.xml

修改成以下内容,保存退出。

<?xml version="1.0" encoding="UTF-8"?> 
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> 
          <property> 
              <name>dfs.replication</name> 
              <value>1</value> 
          </property> 
</configuration>

dfs.replication 的默认值是 3,因为伪分布式只有一个节点,所以值设置为 1。

(4_4)配置 mapred-site.xml

复制 mapred-site.xml.template,生成 mapred-site.xml。

cp mapred-site.xml.template mapred-site.xml

用 vi 命令打开 mapred-site.xml。

$ vi mapred-site.xml

修改成以下内容,保存退出。

<?xml version="1.0"?> 
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> 
           <property> 
                  <name>mapreduce.framework.name</name>                   <value>yarn</value> 
           </property> 
</configuration>

mapreduce.framework.name 默认值为 local,设置为 yarn,让 MapReduce 程序运 行在 YARN 框架上。

(4_5)配置 yarn-site.xml

用 vi 命令打开 yarn-site.xml。

$ vi yarn-site.xml

修改成以下内容,保存退出。

<?xml version="1.0"?> 
<configuration>
          <property> 
                 <name>yarn.resourcemanager.hostname</name>                  <value>node1</value>  
 <!-- 以上主机名或IP 地址按实际情况修改 --> 
          </property> 
          <property> 
                 <name>yarn.nodemanager.aux-services</name>                  <value>mapreduce_shuffle</value> 
          </property> 
</configuration>

yarn.resourcemanager.hostname 属性为资源管理器的主机,设置为 Ubuntu 操作 系统的主机名或 IP 地址。

yarn.nodemanager.aux-services 属性为节点管理器的辅助服务器,默认值为空,设 置为 mapreduce_shuffle。

通过以上设置,我们完成了 Hadoop 伪分布式模式的配置。其实 Hadoop 可以配置 的属性还有很多,没有配置的属性就用默认值,默认属性配置存放在 core-default.xml、 hdfs-default.xml、mapred-default.xml 和 yarn-default.xml 文件中。可以到官网查询对 应文档或通过命令 locate <查找的文件名> 来查找文件所在路径,再通过 cat 命令查看 其内容,例如:

$ locate core-default.xml /home/hadoop/soft/hadoop-2.7.3/share/doc/hadoop/hadoop-project-dist/hadoop-common /core-default.xml 
$ cat /home/hadoop/soft/hadoop-2.7.3/share/doc/hadoop/hadoop-project-dist/hadoop-common/cor e-default.xml

(5)格式化 HDFS

格式化的过程是创建初始目录和文件系统结构的过程。执行以下命令格式化 HDFS。

$ hdfs namenode –format 
$ sudo chmod 777 hadoop-2.7.1

注意:格式化只需进行一次,下次启动不要再次格式化,否则会少 DataNode 进程。

(6)启动 Hadoop

采用下面命令启动 HDFS。

$ start-dfs.sh

用 jps 命令验证,正确启动会出现以下 3 个进程

$ jps 
NameNode 
DataNode 
SecondaryNameNode

采用下面命令启动 YARN。

$start-yarn.sh

(7)验证 Hadoop 进程

用 jps 命令验证,正确启动将多出以下两个进程。

$ jps ResourceManager NodeManager

tips:start-dfs.sh、start-yarn.sh 也可以合并成下面一个命令。

$start-all.sh

tips:若使用$start-all.sh命令,在开启Hadoop进程的时候系统会提示我们输入四次虚拟机的密码!

如果某个主机少了某个进程,应该到相应主机去找对应的 log 查看原因,log 存放在 ${HADOOP_HOME}/logs 目录下。例如,若少了 DataNode 进程,那么就切换到 ${HADOOP_ HOME}/logs 目录下,查看 DataNode 相关的 log,找到含有“WARN”“Error” “Exception”等的关键字句,通过上网搜索关键字句找到解决问题的办法

$ cd ${HADOOP_HOME}/logs 
$ cat hadoop-hadoop-datanode-node1.log

也可以通过 vi 命令查看。

$ vi hadoop-hadoop-datanode-node1.log

最新出现的错误,其信息都在文章末尾。

(8)通过 Web 访问 Hadoop

(8_1)HDFS Web 界面

在 Windows 浏览器中,输入网址 http://ip地址:50070(例:http://192.168.30.128:50070),可以查看 NameNode 和 DataNode 的信息,如图所示。
在这里插入图片描述

在 Windows 浏览器中,输入网址 http://ip地址:50090(例:http://192.168.30.128:50090),可以查看 SecondaryNameNode 的信息,如图所示。
在这里插入图片描述
(8_2)YARN Web 界面

在 Ubuntu 操作系统的浏览器中,输入网址 http://ip地址:8088(例:http://192.168.30.128:8088),可以查看 集群所有应用程序的信息,如图所示。
在这里插入图片描述
步骤到了这里,基本已经可以确定你的Hadoop已经配置完成了!!!
在这里插入图片描述

8. 结语

以上就是配置Hadoop的初始步骤,对于作为初学者的同学,Hadoop的配置是最低要求,利用Linux下的Ubuntu操作系统来实现Hadoop伪分布式的运行,学习Hadoop生态的各大功能,大家好好学习,共勉!!!

  • 10
    点赞
  • 107
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值