神刀安全网

Hadoop 2.7.0模拟分布式实验环境搭建[亲测]

一、虚拟机配置安装

本实验采用三台虚拟机作为分布式模拟,因此建立了三台虚拟机。每台虚拟机分别分配1g内存,15G硬盘空间。分别命名为Node1(master192.168.0.1), Node2( slave192.168.0.2 ),Node3( slave192.168.0.3

修改/etc/hosts,添加

192.168.0.1 Node1

192.168.0.2 Node2

192.168.0.3 Node3

1.虚拟机OS安装

  •      三台虚拟机安装linux(CenOS 6.5)
  •      关闭防火墙、iptables(在root权限下,运行chkconfig iptables off永久关闭防火墙,然后运行service iptables status查看防火墙运行状态)

2.网络配置

  •      由于在局域网环境进行实验,因此虚拟机的网络适配器选择桥接模式(虚拟机-网络适配器-桥接模式)。
  •      同时选择网络适配器设置(虚拟机-网络适配器-网络适配器设置),选择“连接网络适配器”
  •      静态ip设置:局域网可以自行给每台主机设置静态ip,在网络里选择ipv4为手动模式,进行ip配置。(我分别设置为192.168.0.1/2/3)

验证:分别在三台主机上打开终端,进行ping其他主机的ip,若都能互相ping通,则设置成功

二、jdk安装

在oracle官网下载java SE的jdk。下载后解压到主机上,由于jdk安装网上很多,因此不再细讲jdk安装。

验证:在终端输入java -version后有提示说明安装成功

三.SSH免密码登陆

由于在互相远程操作的话,我们使用ssh [ip]命令进行ssh登录,需要输入远程主机的密码才能登陆。因此要将ssh设置为免密码登陆。

在设置的时候要做两方面ssh免密码登陆,一方面是自己登陆到自己(localhost)需要设置,另外一方面是需要将自己到其他各个主机之间都设置为ssh免密码登陆。

其实ssh免密码登陆的设置,就是将本机的rsa公钥传到远程主机上,将公钥内容放到对方主机的/.ssh文件夹里面的authorized_keys里面,即可实现免密码登陆。

操作如下:

首先关闭本机的防火墙及iptables等

Node1(master)

A:免密码登陆到其他主机

1.回到用户主目录(cd ~)

2.运行 ssh-keygen -t rsa ,一直回车   (生成rsa 密钥)

3.进入生成的文件夹.ssh,运行 scp id_rsa.pub username@192.168.0.X:/home/username/.ssh/authorized_keys 将pub公钥分别传给其他两个主机

4.再次运行 ssh [ip] 则不需要密码登陆。

B:免密码登陆到本机

将id_rsa.pub里面的内容加到同目录下的 authorized_keys即可。

同理,将其余两个节点都设置为互相ssh免密码登陆。

[其实不用这么麻烦,可以将其与两个slave和master自己的id_rsa.pub都加到master的authorized_keys里,然后master的这个authorized_keys都复制到其他节点的.ssh/里面就行了]

验证:在各个主机上,输入[ssh 目标ip]都不用输入密码,直接登录

四、Hadoop配置

非常重要的来了。中间遇到各种问题,由于查的各种资料不靠谱,搞了一周才把这步搞定。

1.hadoop下载

首先,毫无疑问我们得去官网上下载hadoop的包。http://mirror.bit.edu.cn/apache/hadoop/common/

在界面中,我选择的是2.7.0的版本。选择下载 hadoop-2.7.0.tar.gz (当然也能复制下载链接用wget,都一样)

2.解压hadoop,将其放到用户主目录下,命名为hadoop

3.配置hadoop文件

A.配置环境变量

打开/etc/profile,编辑如下

#set Java   JAVA环境变量

export JAVA_HOME=/usr/java

export JAVA_BIN=/usr/java/bin
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME JAVA_BIN PATH CLASSPATH
export JAVA_LIBRARY_PATH=/home/renjie/hadoop/lib/native

#set Hadoop hadoop环境变量

export HADOOP_HOME=/home/renjie/hadoop

export PATH=$PATH:HADOOP_HOME/bin

立即生效:source /etc/profile

B.在hadoop目录下,分别建立tmp、dfs、dfs/name、dfs/data文件夹

C.配置hadoop环境文件

修改hadoop/etc/hadoop/hadoop-env.sh, 取消export JAVA_HOME=/usr/java的注释,并且配置java的绝对路径

修改hadoop/etc/hadoop/yarn-env.sh,同样将java路径配置为绝对路径

D.修改hadoop/etc/hadoop/core-site.xml

<configuration>

<property>

<name>fs.defaultFS</name>

<value>hdfs://192.168.0.1:9000</value>

</property>

<property>

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

<value>/home/renjie/hadoop/tmp</value>

</property>

</configuration>

E.修改hadoop/etc/hadoop/hdfs-site.xml

<configuration>

<property>

<name>dfs.nameservices</name>

<value>Node1</value>

</property>

<property>

<name>dfs.ha.namenodes.Node1</name>

<value>Node1</value>

</property>

<property>

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

<value>file:/home/renjie/hadoop/dfs/data</value>

</property><property>

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

<value>Node1:9001</value>

</property>

<property>

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

<value>true</value>

</property>

<property>

<name>dfs.replication</name>

<value>2</value>

</property>

</configuration>

F.修改hadoop/etc/hadoop/mapred-site.xml

<configuration>

<property>

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

<value>mapreduce_shuffle</value>

</property>

<property>

<name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>

<value>org.apache.hadoop.mapred.ShuffleHandler</value>

</property>

<property>

<name>yarn.resourcemanager.address</name>

<value>192.168.0.1:8032</value>

</property>

<property>

<name>yarn.resourcemanager.scheduler.address</name>

<value>192.168.0.1:8030</value>

</property>

<property>

<name>yarn.resourcemanager.resource-tracker.address</name>

<value>192.168.0.1:8031</value>

</property>

<property>

<name>yarn.resourcemanager.admin.address</name>

<value>192.168.0.1:8033</value>

</property>

<property>

<name>yarn.resourcemanager.webapp.address</name>

<value>192.168.0.1:8088</value>

</property>

<property>

<name>yarn.nodemanager.resource.memory-mb</name>

<value>768</value>

</property></configuration>

G.修改hadoop/etc/hadoop/slaves

其中注销掉localhost,添加

Node2

Node3

五、分发hadoop

将配置好的hadoop分发到其他节点。

在用户主目录下, scp -r hadoop username@192.168.0.2:/home/username //将当前目录下的hadoop文件夹传到192.168.0.2的username用户文件夹下。剩下节点也这样操作

六、初始化

进入hadoop目录。运行 bin/hadoop namenode -format 若最后出现success,则成功初始化

七、运行hadoop

在master上,进入hadoop/sbin,运行 ./start-all.sh ,运行hadoop

这个时候如果hadoop没有配置好的话,可能会进行报错。这一步运行后,提示中不能出现任何错误。我做的时候运行这一步,出现了

WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform...  using builtin-java classes where applicable
这种情况是没有找到本地库。解决方案:http://dl.bintray.com/sequenceiq/sequenceiq-bin/。在这个网站下载对应的版本包。下载后解压,将里面的文件覆盖到hadoop/lib/native/就行。

最后成功运行后,输入jps。出现此时运行的程序,若出现

10914 Jps

9112 ResourceManager

8862 NameNode

则master成功

在slave上,运行 jps ,若出现

2326 DataNode3423 Jps

则slave成功。

至此,hadoop成功运行。接下来可以运行example了

转载本站任何文章请注明:转载至神刀安全网,谢谢神刀安全网 » Hadoop 2.7.0模拟分布式实验环境搭建[亲测]

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
分享按钮