centos6搭建hadoop伪分布式集群(非HA)

一、准备工作:

1.安装虚拟机 VMware Workstation

2.在虚拟机上安装linux系统,我这里安装的是

CentOS-6.8-x86_64-bin-DVD1.iso

3.下载jdk-8u65-linux-x64.tar.gz

4.下载hadoop-2.6.1.tar.gz

 

这里说明下,为什么使用centos

 1.CentOS是redhat的重写版,本身是免费的

 2.CentOS独有yum命令支持在线升级,可以即时更新系统,不需要像redhat那样购买服务

 

登录用户名和密码统一设置成hadoop,并且各个节点的目录结构要保持一致,方便集群管理和操作

 

3.安装成功一台系统后,再同样安装另外两台,搭建3台机器,即1个主节点(namenode)和两台数据节点(datanode),后期根据HA再扩展节点

注:如何快速复制系统,找到虚拟机的安装目录,将其中的文件全部复制到一个新的文件夹,如图:

然后再虚拟机中选文件-》打开

 

选择虚拟机的执行程序,打开,系统就复制成功了,打开系统时,有如下提示:

选择我已复制该虚拟机,搞定

 

4.准备配置需要的软件包

1)hadoop-2.6.1.tar压缩包

2)

 

5.调整系统的分辨率,以适应全屏

 

6.各系统间使用nat模式,和主机共享网络,在一个网段里,因此能上网

 

打算把namenode装在hadoop1节点,secondary namenode装在hadoop2节点

 

二、配置服务器间免密登录

 

1)配置hadoop1的/etc/hosts,dns映射(需要登录root用户)

 

#localhost

192.168.80.130 hadoop1

#hadoop2

192.168.80.131 hadoop2

#hadoop3

192.168.80.132 hadoop3

 

同理配置hadoop2,hadoop3节点

 

2)在hadoop1节点上生成私钥

ssh-keygen -t rsa

 

-b:指定密钥长度;

-e:读取openssh的私钥或者公钥文件;

-C:添加注释;

-f:指定用来保存密钥的文件名;

-i:读取未加密的ssh-v2兼容的私钥/公钥文件,然后在标准输出设备上显示openssh兼容的私钥/公钥;

-l:显示公钥文件的指纹数据;

-N:提供一个新密语;

-P:提供(旧)密语;

-q:静默模式;

-t:指定要创建的密钥类型。

 

ssh-copy-id -i /root/.ssh/id_rsa.pub root@hadoop2将公钥钥分别保存到hadoop2和3节点

 

上面的命令是 ssh-copy-id将pub值写入远程机器的~/.ssh/authorized_key中

登录hadoop2,的确不用输入密码了

 

同理,在hadoop2节点,需要把公钥保存到hadoop1和hadoop3

在hadoop3节点,需要把公钥保存到hadoop2和hadoop1

,免密登录到此配置完成

 

注意:若是在root用户下面生成的私钥公钥,并发往其它机器,那么需要用这个用户(root)登录其它用户才行,如果时hadoop用户登录其它主机,需要重新配置一份公钥并发送

 

三、配置jdk环境

 

我这里没有集成xtfp,所以用的rz命令上传windows下载好的安装包,如果本地服务器没有配置这个命令,可使用yum install lrzsz自动配置

 

1)先把jdk安装包上传到/home/hadoop/hadoop/jdk目录下

2)解压文件

    tar -xzvf jdk-8u65-linux-x64.tar.gz

3)配置环境变量

    vim /etc/profile

source /etc/profile 使配置生效

4)jdk配置完毕

 

5)同理配置hadoop2和hadoop3节点,在此就不详细描述了

 

 

四、配置hadoop环境

 

1)上传hadoop gz包到/home/hadoop/hadoop目录下

2)解压文件

3)配置环境变量

4)source /etc/profile使文件生效

 

5)执行hadoop命令,出现如下图所示,即为成功

 

五、配置hadoop运行环境

 

1)修改core-site.xml

 

<configuration>

<!--此属性用来指定namenode的hdfs协议的文件系统通信地址,可指定一个主机+端口,也可指定为一个namenode服务-->

<property>

<name>fs.defaultFS</name>

<value>hdfs://hadoop1:9000</value>

</property>

 

<!--此属性用来执行IO文件缓冲区的大小-->

<property>

<name>io.file.buffer.size</name>

<value>131072</value>

</property>

 

<!--指定hadoop运行时产生文件的存储目录-->

<property>

<name>hadoop.tmp.dir</name>

<value>file:/home/hadoop/hadoop/hadoop-2.6.1/data/tmp</value>

</property>

</configuration>

 

后期如果假如zookeeper的话,可添加如下属性

<property>

<name>ha.zookeeper.quorum</name>

<value>hadoop1:2181,hadoop2:2181,hadoop3:2181</value>

</property>

 

2)修改hadoop-env.sh

找到

 

修改等号后面的内容为/home/hadoop/hadoop/jdk/jdk1.8.0_65即可

 

3)修改hdfs-site.xml

<configuration>

<!--secondary namenode的http通讯地址,-->

<property>

<name>dfs.namenode.secondary.http-address</name>

<value>hadoop2:9001</value>

</property>

 

<!--namenode数据的存放地点,也就是namenode元数据存放的地方,记录了hdfs系统中文件的元数据-->

<property>

<name>dfs.namenode.name.dir</name>

<value>file:/home/hadoop/hadoop/hadoop-2.6.1/dfs/name</value>

</property>

 

<!--datanode数据的存放地点,也就是block块存放的目录-->

<property>

<name>dfs.datanode.data.dir</name>

<value>file:/home/hadoop/hadoop/hadoop-2.6.1/dfs/data</value>

</property>

<!--hdfs的副本数量设置,默认为3 也就是上传一个文件,将其根据block设置的大小限制分割后,每个block块冗余副本个数-->

<property>

<name>dfs.replication</name>

<value>2</value>

</property>

 

<!--开启hdfs的web访问接口,默认端口时50070-->

<property>

<name>dfs.webhdfs.enabled</name>

<value>true</value>

</property>

</configuration>

 

4)vim salves(hadoop1不需要加)

hadoop2

hadoop3

 

5)修改mapred-env.sh

 

6)修改mapred-site.xml(注意要将mapred-site.xml.template重命名为 .xml的文件)

 

<!--指定mr框架为yarn方式,hadoop第二版本MR也是根据资源管理系统yarn来运行-->

<property>

<name>mapreduce.framework.name</name>

<value>yarn</value>

</property>

 

7)修改yarn-env.sh

 

8)修改yarn-site.sh

 

注:这个文件就是配置资源管理系统yarn了,其中主要指定了一些节点资源管理器nodemanager,以及总资源管理器resourcemanager的配置。 可以看到这个配置中,跟mapreduce框架是相关的。

可见yarn首先是为了支持mapreduce这个模型,之后很多其他的框架都是基于mapreduce以及yarn的功能基础上开发出来的

 

<!--reducer获取数据的方式-->

<property>

<name>yarn.nodemanager.aux-services.aux-services</name>

<value>mapreduce_shuffle</value>

</property>

<!--指定yarn的resourcemanager的地址-->

<property>

<name>yarn.resourcemanager.hostname</name>

<value>hadoop2</value>

</property>

 

配置完毕,

 

六、将配置好的hadoop-2.6.1分发到hadoop2和hadoop3节点

 

1)scp -r hadoop-2.6.1 hadoop@hadoop2:/home/hadoop/hadoop/

 

如果此处提示permission denied,则修改目标主机的文件夹的权限为777

 

2)分发完毕后,分别配置hadoop2节点和hadoop3节点的hadoop环境变量,跟hadoop1的配置一样

 

七、启动验证集群

1)启动集群

如果集群时第一次启动,需要格式化namenode

 

执行hdfs namenode -format(只需要格式化namenode)

 

出现这个标识,表示格式化成功

 

2)在主节点启动namenode

start-dfs.sh

使用jps查看进程

3)在hadoop2节点启动yarn(因为yarn和namenode不是安装在一个节点,所以需要单独启动)

start-yarn.sh

用jps查看进程

hadoop3进程:

在浏览器数据hadoop1:50070可看到管理页面

3.yarn管理界面:

4)关闭节点:

主节点Hadoop:stop-dfs.sh,不推荐使用start-all.sh,执行时会提示方法已过期

hadoop2节点:stop-yarn.sh

 

遇到的问题

1.管理页面没有活动的datanode

有可能,datanode的防火墙没关

临时关闭防火墙:service iptables stop

永久关闭防火墙:chkconfig iptables off

 

关闭防火墙后,果然出来了界面:

2.nodemanager did not stop gracefully after 5 seconds: killing with kill -9

这个没关系, 在hadoop 2.4.1里面启动jps的时候其实已经没有jobTrack和taskTrack这个两个服务了,换成了JobHistoryServer ,这个不需要去纠结。

 

3.每次执行hdfs dfs -ls的时候,都会提示这个warn:util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

 

解决方案:

1)下载native包:http://dl.bintray.com/sequenceiq/sequenceiq-bin/hadoop-native-64-2.7.0.tar ,然后解压到hadoop的native目录下,覆盖原有文件

tar -xvf hadoop-native-64-2.7.0.tar -C native

 

2)修改hadoop-env.sh的配置文件,注释掉上面的,添加两行

,问题解决

4.每日启动hadoop或者yarn的时候都需要输入密码,时因为我们只是把公钥放到其它主机,并没有放到本地地私钥中,加入即可

cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys

 

5.设置外部主机访问虚拟机

 

虚拟机---》编辑---》虚拟网络编辑器----》NAT设置----》添加(下方有以管理员身份操作)

然后在外部浏览器访问虚拟机主机:

6.出现这个问题

 

原因是我修改了hadoop3节点的hadoop-env.sh 并source了资源,不过HADOOP_CONF_DIR路径没改成我自己的

把上面的注释,改成下面的即可

 

 

总结:

hadoop伪集群搭建的过程不是很复杂,主要在第五步配置好启动需要的配置,需要注意的是,我们在配置免密登录时除了其它主机,本主机也要配置,因为在启动namenode和resourcemanager的时候,hadoop需要访问本主机的权限,下一步准备搭建ha集群,用zookeeper做分布式协调,需要进一步地学习和理解hadoop运行的原理,特此记录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值