Hadoop的安装部署(完全分布模式)

Hadoop有三种安装模式,分别是单机模式、伪分布模式和完全分布式模式。

(1). 单机模式
特点:没有分布式文件系统HDFS ,MapReduce处理的是本地Linux的文件数据。
用途:一般仅用于本地MapReduce程序的调试。

(2). 伪分布模式
特点:具备Hadoop的主要功能。
用途:常用于调试程序

(3). 完全分布模式
特点:在多台机器上运行,是真正的分布式环境。
用途:常用于生产

Hadoop一般部署在Linux系统里,当然,我们也可以在Windows系统上去部署Hadoop,有两种方法:一是搭建一台虚拟机并在上面安装Linux系统,然后再部署Hadoop;另一种就是通过Cygwin模拟linux环境。

接下来我们详细讲讲第一种部署方法,以安装Hadoop完全分布式模式为例。

安装规划
确定几个节点,且Namenode、Datanode安装在哪几台机器上。
此处以用两个Datanode,一个Namenode为例

1、安装Linux
下载Ubuntu 16.04
下载地址:Ubuntu下载地址
在这里插入图片描述
(a) 桌面版,默认带了界面 --> ubuntu-16.04.5-desktop-amd64.iso
(b)命令行版,默认没有带界面 --> ubuntu-16.04.5-server-amd64.iso
(具体安装步骤请自行网上搜索)

2、安装好Linux后,关闭防火墙
查看防火墙状态:sudo ufw status
关闭防火墙:sudo ufw disable
此时可以看到防火墙的状态为:Status: inactive
(不过防火墙在系统启动时会自动禁用,这一步骤可有可无)

3、安装JDK
JDK下载链接地址:jdk-8u144-linux-x64.tar.gz
提取码:3956

(JDK压缩包下载到本地后可以通过Xftp软件把它传入虚拟机中,Xftp可以实现本地和Linux虚拟机的文件互传)

解压到根目录:tar zxvf jdk-8u144-linux-x64.tar.gz -C ~
建一个软链接(方便使用):ln -s jdk1.8.0_144 jdk

配置环境变量:vi ~/.bashrc
填入下列字符(等号两侧不要加入空格):

export JAVA_HOME=/home/hadoop1/jdk
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:.

效果如下(代码中的hadoop1换回自己对应的用户名):

代码写好后按Esc键 + :wq 保存修改

使得变量生效:source ~/.bashrc

4、确认openssh-client、openssh-server是否安装
确认openssh-client、openssh-server是否安装:dpkg -l | grep openssh
若没有安装,则输入如下命令
安装openssh-client:sudo apt-get install openssh-client
安装openssh-server:sudo apt-get install openssh-server

5、安装包解压
下载Hadoop压缩包
Hadoop下载地址:hadoop-2.7.3.tar.gz
提取码:27yi

解压到根目录:tar -zxvf hadoop-2.7.3.tar.gz -C ~
建一个软链接(方便使用):ln -s hadoop-2.7.3 hadoop

配置环境变量:vi ~/.bashrc
填入下列字符(代码中的hadoop1换回自己对应的用户名):

  export HADOOP_HOME=/home/hadoop1/hadoop
  export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

使得变量生效:source ~/.bashrc

5、配置主机名
进入主机名配置文件(需要使用root权限,前面加sudo):sudo vi /etc/hosts
加入下列代码:

 191.168.1.51   node1.hadoop  node1
 191.168.1.52   node2.hadoop  node2
 191.168.1.53   node3.hadoop  node3

(这里是一个Namenode,两个Datanode。每行代码中,最前面对应的是三台主机的IP地址,node1、node2和node3分别是对应主机的主机名,而后面的hadoop则是对应主机的用户名,这些都要作相对应的修改)

6、安装ntp服务
查看是否安装ntp: sudo dpkg -l |grep ntp
若尚未安装,运行安装命令:sudo apt-get install ntp
(ntp服务可以很好的解决不同平台之间时间同步问题,还有ntp服务需要注意能连接网络,因为如果时间不一样,执行MapReduce程序的时候可能存在问题)

7、配置免密码登录
(免密码登录可以使自己所在的主机不需要密码就可以登上另一台主机)
在每台机器上运行以下命令:
生成密钥文件和私钥文件:ssh-keygen -t rsa -P ''
(由于是免密码,所以运行此命令后接下来只需要全部按回车,采用默认值,直到生成密钥文件)
把本地的ssh公钥文件安装到远程主机对应的账户下:

ssh-copy-id -i  ~/.ssh/id_rsa.pub  node1
ssh-copy-id -i  ~/.ssh/id_rsa.pub  node2
ssh-copy-id -i  ~/.ssh/id_rsa.pub  node3

每台主机上运行一遍即可

8、安装
8.1修改配置文件
(1)打开hadoop-env.sh文件:vi /home/hadoop1/hadoop/etc/hadoop/hadoop-env.sh
在文件的最后一行添加下列代码(hadoop1改为对应的用户名):

export JAVA_HOME=/home/hadoop1/jdk

(2)打开hdfs-site.xml文件:vi /home/hadoop1/hadoop/etc/hadoop/hdfs-site.xml
在文件的最后一行添加下列代码(表示数据块的冗余度,默认为3):

<property>
   <name>dfs.replication</name>
   <value>2</value>
</property>

(3)打开core-site.xml文件:vi /home/hadoop1/hadoop/etc/hadoop/core-site.xml
在文件的最后一行添加下列代码:

<!--配置NameNode地址,9000是RPC通信端口-->
<property>
   <name>fs.defaultFS</name>
   <value>hdfs://node1:9000</value>
</property>	

<!--HDFS数据保存在Linux的哪个目录,默认值是Linux的tmp目录-->
<property>
   <name>hadoop.tmp.dir</name>
   <value>/home/hadoop1/hadoop/tmp</value>
</property>

注意:两个地方,NameNode是否对应node1,hadoop的tmp目录是否在/home/hadoop1/hadoop下,根据自己情况做对应修改

(4)打开mapred-site.xml 文件:vi /home/hadoop1/hadoop/etc/hadoop/mapred-site.xml
此文件默认没有,故需复制其中的mapred-site.xml.template文件并重命名:
命令为:cp mapred-site.xml.template mapred-site.xml
在文件的最后一行添加下列代码(MapReduce运行的框架):

<property>
   <name>mapreduce.framework.name</name>
   <value>yarn</value>
</property>	

(5)打开yarn-site.xml文件:vi /home/hadoop1/hadoop/etc/hadoop/yarn-site.xml
在文件的最后一行添加下列代码:

<!--Yarn的主节点ResourceManager的位置-->
<property>
   <name>yarn.resourcemanager.hostname</name>
   <value>node1</value>
</property>	

<!--MapReduce运行方式:shuffle洗牌-->
<property>
   <name>yarn.nodemanager.aux-services</name>
   <value>mapreduce_shuffle</value>
</property>	

(6)打开slaves文件:vi /home/hadoop1/hadoop/etc/hadoop/slaves
在文件中添加下列代码:

node2
node3

(slaves文件只作用在NameNode上面,里面记录的是集群里所有DataNode的主机名)

8.2格式化NameNode
运行命令:hdfs namenode -format
(类似于硬盘分区后需要格式化一样的道理)

8.3把主节点上配置好的hadoop文件夹复制到从节点
运行如下代码:

scp -r hadoop-2.7.3/ hadoop@node2:/home/hadoop
scp -r hadoop-2.7.3/ hadoop@node3:/home/hadoop

以上命令用于把配置好的hadoop文件夹复制到两个DataNode上:node2和node3。要是你不怕麻烦,也可以自己在两个DataNode上一个个去配置,按上述8.1步骤即可。

9、启动
运行命令:start-all.sh

10、测试
查看进程,运行命令:jps
测试
通过浏览器查看,输入以下网址:
http://191.168.1.51:50070(HDFS)
在这里插入图片描述
在这里插入图片描述
http://191.168.1.51:50090(HDFS)
http://191.168.1.51:8088(Yarn)
在这里插入图片描述
注意:把191.168.1.51改为相对应NameNode的IP地址,后面的端口号不用改动。

到此为止,Hadoop的完全分布模式就已经部署成功了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值