在CentOS7.4环境下安装伪分布式的Hadoop环境(因为只有一台电脑,而且还是在VMware虚拟机上运行,计算机的原因无法带动多个虚拟机)
一、事前准备
1、关闭防火墙
注:如果不关闭防火墙,会出现以下几种情况:
·hdfs 的web 管理页面,打不开该节点的文件浏览页面
·后台运行脚本(HIVE 的),会出现莫名其妙的假死状态
·在删除和增加节点的时候,会让数据迁移处理时间更长,甚至不能正常完成相关操作
而实际开发中,是不能随便关闭防火墙的,切记切记
教材中用的命令是:sudo ufw ,经过测试,CentOS7.4中没有安装ufw,所以可以使用原生命令关闭防火墙,以下命令仅供参考,关于原生的防火墙命令请参考“linux 防火墙相关命令.mhtml”
·systemctl status firewalld #查看运行状态
·systemctl stop firewalld #关闭
·systemctl disable firewalld.service #禁止开机启动
·firewall-cmd --state #查看默认防火墙状态

2、创建Hadoop专用用户(略)
在Linux 系统下,出于安全考虑,避免使用root 用户(拥有最高权限的用户)误操作对系统
造成不可恢复的甚至灾难性的影响,我们需要创建一个普通用户,并给予他sudo权限,因为有很多操作需要在该用户下使用root用户才能做的命令
要给该用户赋予sudo权限很简单:
·用root用户打开文件/etc/sudoers
·在sudoers文件中找到“root ALL=(ALL) ALL”
·在其后模仿写“你自己的用户名 ALL=(ALL) ALL”
注:如果不想每次执行sudo时都输入密码,可以改成“你自己的用户名 ALL=(ALL) NOPASSWD:ALL”
有关sudoer配置文件的更多内容,请参考“Linux中的sudoer详解.htm”

3、设置NTP时间服务器
hadoop 搭建过程中,为了保证集群内所有主机的时间同步,我们要由NTP同步互联网时间。
1)查看ntp是否安装,可用命令“rpm -qa|grep ntp”
2)安装ntp服务,可用yum安装:“yum –y install ntp”
3)启动ntp服务,可用命令:service ntpd start
4)查看ntp状态,可用命令:ntpstat
查看ntp状态时,可能会出现如下所示情况
unsynchronised time server re-starting polling server every 8 s
或者
unsynchronised polling server every 8 s
就是没有正常同步,需要检查配置文件中互联网上的时间同步服务器是否正常连接,正常的ntp状态应该类似于如下信息:
synchronised to NTP server (120.25.115.20) at stratum 3
time correct to within 966 ms
polling server every 64 s

更多有关ntp的内容,请参考“LinuxNTP服务器搭建部署与NTP时间同步配置.htm”
注:ntp的服务需要更改配置,配置文件(/etc/ntp.conf)需要修改,至少添加如下两个属性:
·server times.aliyun.com iburst prefer #为ntp添加一个互联网上的时间同步服务器(阿里云的时间同步服务是国内较稳定的之一,prefer表示为优先,表示本机优先同步该服务器时间)
·restrict times.aliyun.com nomodify #允许上层时间服务器修改本机时间

4、SSH 设置和密钥生成
为什么要生成密钥?由于Hadoop是一个分布式的系统,主节点需要管理从节点的数据,不可能让Hadoop每次登录从节点主机时都输入密码,因此各个从节点接收到公钥之后,主节点在访问从节点时就可以直接凭公钥访问,跳过输入密码的步骤,保证分布式主节点更好的管理从节点
1)SSH服务的安装(本机在操作系统安装时已经安装了SSH服务,略)
2)生成密钥
·查看主机名
cat /etc/hostname
注:如果觉得计算机名需要更改,在CentOS7中,只需要执行命令:hostnamectl set-hostname 新主机名,然后重启就可永久生效。这个命令需要sudo或者直接在root用户下执行。主机名最好不要用下划线、百分号等其他符号,就用英文字母和数字组成主机名(首字符不能是数字)。另外,记得在更改了主机名之后,要将新的主机名加入“/etc/hosts”文件,否则,后面以当前主机名配置yarn的时候,将会无法访问yarn的web服务(localhost:8088),例如我的/etc/hosts文件(我自己的主机名是“yxhadoopcomputer”)

·生成公钥

使用命令:ssh-keygen -t rsa,会出现如下界面

hadoop client 配置_xml


其中:

·Enter file in which to save the key提示的意思是输入保存公钥的文件,默认为~/.ssh目录下的id_rsa文件,这个不需要修改,直接enter进入下一个提示;

·Enter passphrase提示的意思是输入ssh的登录密码,如果直接打回车,则没有登录密码,这里我输入了一个自己的登录密码yxhadoop,但CentOS不会显示密码

·公钥认证
将公钥追加到目标主机的~/.ssh/authorized_keys文件中,会自动创建认证文件authorized_keys
使用命令:ssh-copy-id -i ~/.ssh/id_rsa.pub 主机名,出现如下提示:

·在提示Are you sure you want to continue connecting (yes/no)?的地方输入yes就可以了
·在提示hadoop_user@yxhadoopcomputer’s password:的地方输入刚刚生成公钥时设定的密码就好
查看公钥是否追加成功,可在目标计算机使用命令:ls ~/.ssh查看,如果能看到该目录下有authorized_keys文件就好了
·SSH 无密登录验证
通过命令$ ssh 主机名,需要输入“yes”完成首次登录到主机,第二次登录就直接登录了
注:验证是否无密登录成功可以先将目录切换到另一个目录下,然后通过命令$ ssh 主机名进行登录,注意观察登录后的当前目录
首先通过cd /home将当前目录切换到home目录下(注意看执行cd命令后的当前目录提示)
然后通过ssh 主机名登入(注意看输入exit命令那一行的当前目录提示)
输入exit登出(注意看登出提示之后那一行的当前目录提示)
ssh-copy-id -i ~/.ssh/id_rsa.pub yxhadoopcomputer

5、软件准备
1)JDK
2)HADOOP

二、安装HADOOP
1、安装JDK
因为HADOOP是一个基于Java的分布式大数据处理框架,要运行HADOOP,Linux必须要有Java环境,所以需要安装JDK,以提供Java的运行平台
1)解压jdk文件包
使用命令:sudo tar -zxvf jdk文件包名 -C 解压目标目录
注:jdk文件包是一个.tar.gz文件
2)配置环境变量
·打开Hadoop专用用户自己的.bashrc文件(该文件是一个隐藏文件,在图形界面中最初可能看不见,需要设置显示隐藏文件才能显现出来)
.在bashrc文件中添加JDK的环境变量
export JAVA_HOME=jdk的根目录
export JRE_HOME=hadoop client 配置_xml_02{JAVA_HOME}/lib:hadoop client 配置_hadoop_03{JAVA_HOME}/bin:$PATH
·刷新配置:使配置立即生效,使用命令“source ~/.bashrc”
·测试JDK是否安装成功:java –version,如果能显示JDK的版本信息,则说明JDK安装成功

2、准备安装HADOOP
1)下载HADOOP
两个方法:
·进入Apache 官网http://archive.apache.org/dist/hadoop/common/选择对应版本的hadoop 二进制(binary)压缩包,下载到本机
·用wget 命令直接下载
使用命令“wget hadoop安装文件路径”,例如:
wget http://archive.apache.org/dist/hadoop/common/hadoop-2.7.3/hadoop-2.7.3.tar.gz
注:HADOOP文件包也是一个.tar.gz文件
2)解压安装包(与解压JDK文件包一样,略)
注:教材中HADOOP目录结构很重要,需要重点理解

3、安装HADOOP——本次课使用Hadoop的伪分布式进行学习,所以安装Hadoop的伪分布式
1)进入HADOOP安装包所在目录,修改hadoop-env.sh 配置文件,在配置文件中添加JDK目录
export JAVA_HOME=JDK目录(最好使用绝对路径)
2)在bashrc文件中添加Hadoop的环境变量
export HADOOP_HOME=~/hadoop
export PATH=hadoop client 配置_hadoop client 配置_04HADOOP_HOME/bin:KaTeX parse error: Expected 'EOF', got '#' at position 18: …DOOP_HOME/sbin #̲这一句是重新定义PATH环境变…{JAVA_HOME}/jre
export CLASSPATH=.:hadoop client 配置_xml_05{JRE_HOME}/lib
#Hadoop环境变量
export HADOOP_HOME=hadoop的根目录
#将Hadoop环境变量和Java环境变量加入PATH变量值中
export PATH=hadoop client 配置_hadoop client 配置_04{JAVA_HOME}/bin:hadoop client 配置_hadoop client 配置_07HADOOP_HOME/sbin

以上两步完成后就可以测试一下HADOOP安装是否成功,使用命令hadoop version,如果能够正常显示Hadoop版本,则说明Hadoop安装成功
3)设置Hadoop 配置文件
安装Hadoop 伪分布模式,总共有5 个文件需配置,它们分别是:hadoop-env.sh、core-site.xml、
hdfs-site.xml、mapred-site.xml、yarn-site.xml。这些配置文件均在${HADOOP_HOME}/etc/hadoop
目录下。
附:Hadoop配置文件的作用
hadoop-env.sh——脚本中用到的环境变量,以运行Hadoop
core-site.xml——Hadoop Core 的配置项,例如HDFS、MapReduce 和YARN 常用的I/O 设置等
hdfs-site.xml——Hadoop 守护进程配置项,包括namenode、secondnamenode 和datanode 等
mapred-sit.xml——Mapreduce 守护进程的配置项,包括作业历史服务器
yarn-site.xml——YARN 守护进程的配置项,包括资源管理器、web 应用代理服务器和节点管理器

·配置core-site.xml



hadoop.tmp.dir
/home/hadoop_user/software/hadoop-2.7.3/tmp



fs.defaultFS

hdfs://yxhadoopcomputer:9000


说明:hadoop的分布式系统中,一个主机称为一个节点,节点分为两大类namenode和datanode,namenode是管理节点,负责管理和协调hadoop集群的各节点工作,datanode是数据节点,负责存放数据
·配置hdfs-site.xml



dfs.replication
1


说明:dfs.replication 的默认值是3,因为伪分布式总共只有一个节点,所以值设置为1。
·配置mapred-site.xml
首先复制mapred-site.xml.template,生成mapred-site.xml
mapred-site.xml没有现成的文件,只有一个模板文件(.template),所以要自己复制生成或自己新建
然后修改mapred-site.xml



mapreduce.framework.name
yarn


·配置yarn-site.xml

<!--声明Yarn的ReduceManager资源管理器的主机地址-->
<property>
	<name>yarn.resourcemanager.hostname</name>
<!--经过测试知道:在集群配置中,此配置的值要写成主机的计算机名,否则无法访问yarn的节点监控服务--> 
	<value>yxhadoopcomputer</value>
</property>
<!--声明nodeManager节点管理器的辅助服务器,默认值为空,设置为mapreduce_shuffle规定其获取数据的方式是shuffle-->
<property>
	<name>yarn.nodemanager.aux-services</name>
	<value>mapreduce_shuffle</value>
</property>

4)格式化HDFS文件系统
格式化的过程是创建初始目录和文件系统结构的过程。格式化只需进行一次,下次启动不再
需要格式化。执行以下命令:
hdfs namenode -format
会打出一堆信息,只要中间没有Error就没问题,只要配置正确一般都不会有Error,如果有Error就根据提示修改相关配置

4、验证Hadoop平台是否安装配置成功
1)启动Hadoop 守护进程验
·启动HDFS——执行命令start-dfs.sh

中间可能会像我一样询问你是不是要continue,当然写yes咯
启动完成之后,可以用jps 命令验证启动结果,正确启动会出现以下三个进程:
NameNode、DataNode和SecondaryNameNode
·启动YARN——执行命令start-yarn.sh

启动完成之后,可以用jps 命令验证启动结果,正确启动会出现以下两个进程:
ResourceManager和NodeManager
从上面的进程名称可知,yarn帮助hadoop管理NameNode

2)浏览器验证
·浏览器访问Hadoop 文件系统
浏览器访问Hadoop 文件系统默认端口号为50070,打开浏览器,输入地址:http://localhost:50070,可以看到如下网页:

·浏览器查看集群所有应用程序

访问集群中的所有应用程序的默认端口号为8088。使用以下URL 访问该服务。网址为:

http://localhost:8088,如果正常显示网页,则安装正确

hadoop client 配置_hadoop client 配置_08

5、停止所有进程
使用命令:stop-dfs.sh和stop-yarn.sh
stop-dfs.sh
stop-yarn.sh