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 / 更改权限