Hadoop-2.7.6集群搭建(最清晰易懂)

Hadoop集群结构

核心:HDFS+MapReduce

集群搭建步骤

准备三台虚拟机,这里使用的是ubuntu16.04,将虚拟机的网络进行桥接配置,使他们之间能够互相访问。

  1. 更改虚拟机的主机名以及配置网址域名和它的IP地址的映射关系
  2. 配置ssh免密登录
  3. 为虚拟机安装好jdk
  4. 安装hadoop并配置相应文件
  5. 初始化HDFS
  6. 批量启动HDFS

过程

1.为3台虚拟机配置好IP地址以及映射关系
#sudo gedit /etc/hosts

在最上面添加主机和从机的IP地址及网址域名:
我这里添加的是

192.168.101.125 master
192.168.101.126 slave1
192.168.101.127 slave2

添加好后,再将主机名修改为master,否则可能会使输入的命令无法被识别

#sudo gedit /etc/hostname

将原来的主机名替换为master

2.配置ssh免密登录
#sudo apt-get install openssh-server

安装完成之后,接下来配置免密

#/etc/init.d/ssh restart
#ssh-keygen -t rsa

如果你已经生成过key,那么他会提醒你id_rsa已经存在;那么你需要重新生成一个免密的key,如果没有生成过,那么每一步都需要按回车确认。
完成之后,将公钥添加到.ssh/authorized_keys

# cat  ~/.ssh/id_rsa.pub  >> ~/.ssh/authorized_keys

配置完成后,尝试一下是否能登录成功

#ssh localhost

登录成功,如图所示
在这里插入图片描述
注意:在ssh中输入的命令,与虚拟机中相同,每次登录过后记得执行exit退出

3.安装jdk

检查是否已经安装了jdk

#java -version

在网上找到jdk1.8.0_162(版本相近的jdk都可以),下载好了之后,执行解压安装命令,这里我jdk的目录为 /usr/local/java/jdk1.8.0_162

#sudo gedit /etc/profile

在最后面的位置为jdk配置环境变量,加入以下代码

export JAVA_HOME=/usr/local/java/jdk1.8.0_162
export PATH= P A T H : PATH: PATH:HOME/bin:$JAVA_HOME/bin
然后保存退出,执行以下代码

#source /etc/profile

每次登录系统时才会重新读取环境变量,这里的操作是为了避免重启,但是在退出界面后就会失效,所以建议配置完环境之后重启虚拟机使环境生效。
然后再次检查一下jdk是否安装成功

#java -version

如图所示,
在这里插入图片描述

4.安装hadoop-2.7.6并配置相应文件

第一步,安装hadoop。
下载好安装包后,上传到虚拟机解压安装,

#tar zxf hadoop-2.7.6.tar.gz
#sudo mv hadoop-2.7.6 /usr/local/

这里,将解压好的文件hadoop-2.7.6移动到 /usr/local/ 的目录下。下一步就是为hadoop配置环境变量。

#sudo gedit /etc/profile

在配置文件的最下面添加上:

export HADOOP_HOME=/usr/local/hadoop-2.7.6
export PATH= P A T H : PATH: PATH:HADOOP_HOME/bin

如图所示,
在这里插入图片描述
同之前的jdk一样,配置好环境之后需要执行source /etc/profile,使环境生效。
接下来,测试hadoop是否安装成功。

#hadoop version

如图所示,hadoop安装完成。
在这里插入图片描述
第二步,配置hadoop的配置文件
首先,进入文件目录

cd /usr/local/hadoop-2.7.6/etc/hadoop/

在这里面需要配置的文件有:
1、hadoop-env.sh:用来配置hadoop所需要的jdk的环境,是hadoop可以调用本机的jdk。
2、core-site.xml :里面的参数
fs.defaultFS,用来说明hadoop使用什么文件系统。
hadoop.tmp.dir,hadoop文件存储目录。
还有两个参数一般不做修改,
fs.checkpoint.period,表示多长时间记录一次hdfs的镜像,默认是1小时。
fs.checkpoint.size,表示镜像文件快大小,默认64M。

3、hdfs-site.xml:用来指定namenode和datanode的存放目录,还有存放数据的副本数,一般默认为3。
4、mapred-site.xml:mapreduce的参数。
5、yarn-site.xml :集群资源管理系统参数。
6、slaves:需要启动datanode和nodemanager的虚拟机
修改内容如下:

#sudo gedit hadoop-env.sh

在这里插入图片描述

#sudo gedit core-site.xml
<configuration>
 <property>
     <name>fs.defaultFS</name>
     <value>hdfs://master:9000</value>
     <description>指定HDFS的(NameNode)的地址</description>
  </property>
  <property>
      <name>hadoop.tmp.dir</name>
      <value>file:/usr/local/hadoop-2.7.6/dfs/tmp</value>
      <description>指定hadoop运行时产生文件的存储目录</description>
</property>
</configuration>
#sudo gedit hdfs-site.xml
<configuration>
  <property>
     <name>dfs.replication</name>
     <value>3</value>
	 <description>指定HDFS副本的数量</description>
  </property>
  <property>
     <name>dfs.namenode.name.dir</name>
     <value>file:/usr/local/hadoop-2.7.6/dfs/name</value>
     <description>namenode的存储路径</description>
  </property>
  <property>
     <name>dfs.datenode.date.dir</name>
     <value>file:/usr/local/hadoop-2.7.6/dfs/date</value>
     <description>指定datenode的路径</description>
</property>
</configuration>
#mv mapred-site.xml.template mapred-site.xml
#sudo gedit mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
#sudo gedit yarn-site.xml
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
#sudo gedit slaves

在里面添加两台从机,
在这里插入图片描述
完成配置。

5、初始化HDFS

回到根目录下,然后在主机上初始化namenode,

#cd /
#hdfs namenode -format
6、启动HDFS
#start-all.sh
#jps

如图所示,主机显示情况
在这里插入图片描述
在从机上输入jps查看,没有NameNode和SecondaryNameNode,存在DataNode。
以上就是搭建集群的全部过程。
接下来有几点注意事项
1、如果DataNode没有启动,那就说明你可能原本DataNode的目录被使用过了,里面的对于NameNode的编号与现在的不一致。解决方法:如果DataNode文件夹里存在数据,那么你需要修改Current下的version,使其与DataNode上的保持一致。如果DataNode里面没有数据,是刚搭建的,那么可以先将HDFS关闭,然后删除DataNode文件夹,再次打开HDFS,这样的话,DataNode就会重新获取NameNode的信息,就可以连接上了。
2、免密登录时必不可少的,那么要求每一台设备之间都可以互相访问,这就需要每一台设备里面的~/.ssh/id_rsa.pub 和 ~/.ssh/authorized_keys 都保持一致,只要这样才可以互相访问成功。
3、有一点很特殊的地方,在你ssh访问登录时,会保留你此时登录该域名的信息。举个例子,在你第一次ssh slave1时,这样的登录会被保留下来,以slave1的形式。那么在你下次将另一台设备设置为slave1时,就无法完成登录,因为映射表中已经存在了信息,那么你就需要根据反馈的信息将原先的删除后才可以使用。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值