新手必备Hadoop伪分布式的安装

1、安装虚拟机

2、安装ubuntu操作系统

  • Linux操作系统是一套自由传播的类UNIX操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。主流的Linux发行版本有:Ubuntu、CentOS、Red Hat、Suse等。本书选用Ubuntu 16.04 桌面版。
    (1)下载Ubuntu ISO镜像文件。到Ubuntu官网选择对应的版本进行下载。本书选择的版本是ubuntu-16.04.4-desktop-amd64.iso。
    (2)打开VMware Workstation Pro软件,单击左侧栏的虚拟机(如Ubuntu),再单击右侧的“编辑虚拟机设置”
    在这里插入图片描述
    (3)选择“CD/DVD(SATA)”,连接选择“使用ISO映像文件”,单击【浏览】按钮,选择下载的ISO镜像文件,单击【确定】按钮,如图2-17所示。
    在这里插入图片描述
    (4)单击“开启此虚拟机”,然后根据提示安装至完成
    在这里插入图片描述

3、关闭防火墙

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

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

$ sudo ufw status
Status: inactive

注意:本书使用的命令以“KaTeX parse error: Expected 'EOF', got '#' at position 19: …时,代表当前用户为普通用户;“#̲”开头代表当前用户为 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较简单,只需要双击安装文件默认安装即可。
    安装完Xshell及Xftp后,打开Xshell,选中左侧所有会话,单击右键,选择【新建】-【会话】
    在这里插入图片描述
  • 在Xshell中新建会话
    在连接中,配置名称及主机。其中,主机是上面安装的Ubuntu操作系统的IP地址,
    在这里插入图片描述
  • 输入连接信息
    说明,如果要查看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操作系统
    在这里插入图片描述
    配置Ubuntu操作系统的用户名和密码

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系统~目录下
在这里插入图片描述

打开Xftp上传安装包 ,上传成功后,在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
export  HADOOP_HOME=/home/wgq/hadoop/hadoop-2.7.3
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HAME/sbin

在这里插入图片描述

(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

伪分布式其实是完全分布式的一种特例,但它只有一个节点。表2-2 为安装伪分布式模式所需要修改的文件、属性名称、属性值及含义。
表2-2 伪分布式模式的配置
在这里插入图片描述

(1)修改主机名

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

$ hostname
hadoop-virtual-machine

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

$ sudo vi /etc/hostname

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

node1

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

$ sudo re boot

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

先查看Ubuntu操作系统的IP地址,可参考2.1.5小节。比如,这里查到的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_key

通过命令$ 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
 * Support:        https://ubuntu.com/advantage
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目录下。

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为用户名,注意要按实际修改。
在这里插入图片描述

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>
</configurat  ion>

在这里插入图片描述

配置说明:
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

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>
        <property>
             <name>dfs.namenode.name.dir</name>
             <value>file:/home/hadoop/hadoop/tmp/dfs/name</value>
        </property>
        <property>
             <name>dfs.datanode.data.dir</name>
             <value>file:/home/hadoop/hadoop/tmp/dfs/data</value>
        </property>
</configuration>

在这里插入图片描述

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

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框架上。

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/core-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

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

$start-all.sh

在这里插入图片描述

如果某个主机少了某个进程,应该到相应主机去找对应的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
  • 1)HDFS Web界面
  • 在Windows浏览器中,输入网址http://192.168.30.128:50070,可以查看NameNode和DataNode的信息,如图所示。

  • 在Windows浏览器中,输入网址http://192.168.30.128:50090,可以查看SecondaryNameNode的信息,如图所示。
    通过Web查看50070端口界面
    在这里插入图片描述

  • 通过Web查看50090端口界面
    在这里插入图片描述

2)YARN W eb界面

在Ubuntu操作系统的浏览器中,输入网址http://192.168.30.128:8088,可以查看集群所有应用程序的信息,如图所示。
在这里插入图片描述

若没有nomenode

如果不是ssh问题,请执行以下操作:

从临时目录rm -Rf / app / hadoop / tmp删除所有内容,并格式化namenode服务器bin / hadoop namenode -format。使用bin / start-dfs.sh启动namenode和datanode 。在命令行中键入jps,以检查节点是否正在运行。

检查hduser是否有权使用ls -ld目录写入hadoop_store / hdfs / namenode和datanode 目录

您可以通过sudo chmod +777 / hadoop_store / hdfs / namenode / 更改权限

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值