赞
踩
Hadoop环境搭建
在前人的基础上自己写的,内容上有些借鉴!
Hadoop是一个分布式系统基础架构,需要多台服务器才能有效工作。本文采用虚拟机模拟多台服务器的情况,server-1作为NameNode,server-2与server-3作为DataNode,简单介绍Hadoop环境的搭建步骤。重点介绍SSH协议免密码访问配置和NameNode ,DataNode的配置。虚拟服务器的安装以及jdk的安装在这里不做详细叙述。
三台虚拟Linux服务器(操作系统均为ubuntu-14.04.4-server-amd64)
server-1: NameNode
server-2: DataNode
server-3: DataNode
操作时使用的用户均为wisedu
创建用户的命令如下:
suduuseradd -d /usr/wisedu -m wisedu -g hadoop -G adm
(hadoop为创建的组)
JDK1.8
Hadoop2.7.3(只支持JDK1.7+)
该步骤为必须!在此不做详叙。
该步骤主要是为了后面操作各服务器方便,不需要输入IP地址,直接输入服务器名就可以访问。
将各个服务器的信息加入到hosts文件里,三个服务器的hosts文件都要修改。如下图:
Hadoop集群的各个结点之间需要进行数据的访问,被访问的结点对于访问用户结点的可靠性必须进行验证,Hadoop采用的是SSH的方法通过密钥验证及数据加解密的方式进行远程安全登录操作,SSH主要通过RSA算法来产生公钥与私钥,在数据传输过程中对数据进行加密来保障数据的安全性和可靠性。当然,如果Hadoop对每个结点的访问均需要进行验证,其效率将会大大降低,所以才需要配置SSH免密码的方法直接远程连入被访问结点,这样将大大提高访问效率。
开始之前我们先用ssh登陆下本机或者其他服务器,可以看到无论是本机还是其他主机,都是需要输入密码的:
键入命令:ssh-keygen -t dsa -f~/.ssh/id_dsa 该命令会产生公钥和私钥,产生目录在用户主目录下的.ssh目录下,如下图:
Id_dsa为私钥,id_dsa.pub为公钥。
输入命令:cp id_dsa.pub authorized_keys 将公钥文件复制成authorized_keys文件。
完成以上步骤,在本服务器上生成公钥和私钥的步骤基本完成,下面验证单机回环ssh免密码登录测试:
如图所示,直接输入ssh localhost不再需要输入密码,说明操作成功。在server-2与server-3上也按同样的方法生成公钥和私钥。
登陆server-2服务器,使用scp命令,
scp wisedu@server-1:~/.ssh/id_dsa.pub ./server-1.pub 将server-1服务器上的公钥文件复制到本地,如下:
使用命令 cat server-1.pub >> authorized.pub 将主服务器公钥server-1.pub追加到本机的公钥文件authorized.pub文件中。
如果不出问题,此时server-1服务就可以通过SSH免密码访问server-2了。测试如下图所示 表示成功了。
在server-3上做同样的操作,使server-1可以免密码登陆server-3。
访问Hadoop官网下载安装包,2.7以后的版本只支持jdk1.7+
将下载的压缩包放到server-1/usr/wisedu/hadoop目录下。
在安装目录下创建四个目录:tmp、hdfs、hdfs/data、hdfs/name
进入Hadoop安装目录下的etc/hadoop目录下,修改core-site.xml文件,在配置中加入如下内容,server-1为NameNode服务器名称。
<property>
<name>fs.defaultFS</name>
<value>hdfs://server-1:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/wisedu/hadoop/hadoop-2.7.3/tmp</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131702</value>
</property>
如图:
进入Hadoop安装目录下的etc/hadoop目录下,修改hdfs-site.xml文件,在配置中加入如下内容:
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/wisedu/hadoop/hadoop-2.7.3/hdfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/wisedu/hadoop/hadoop-2.7.3/hdfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>server-1:9001</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
进入Hadoop安装目录下的etc/hadoop目录下,修改mapred-site.xml文件,在配置中加入如下内容:
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>server-1:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>server-1:19888</value>
</property>
如图:
进入Hadoop安装目录下的etc/hadoop目录下,修改yarn-site.xml文件,在配置中加入如下内容:
<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>server-1:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>server-1:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>server-1:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>server-1:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>server-1:8088</value>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>768</value>
</property>
如图:
进入Hadoop安装目录下的etc/hadoop目录下,修改slaves文件,增加从服务器,如下图:
就算是配置了全局的环境变量JAVA_HOME也要配置这个!
进入Hadoop安装目录下的etc/hadoop目录下,修改hadoop-env.sh、yarn-env.sh两个文件,增加 exportJAVA_HOME=/usr/java/jdk1.8.0_111 (根据实际情况设置)。
使用scp命令像各个从服务器复制Hadoop:
scp-r./hadoop wisedu@server-2:/usr/wisedu/
scp-r./hadoop wisedu@server-3:/usr/wisedu/
在Hadoop安装目录下执行:bin/hdfs namenode -format
使用sbin目录下的start-all.sh启动服务
在namenode节点server-1上查看,显示如下图则表示启动成功。
在datanode节点上查看,显示如下则表示datanode节点启动成功。
输入:http://192.168.220.129:8088得到如下页面,查看的是ResrouceManager状态
输入:http://192.168.220.129:50070得到如下页面,查看的是Hdfs状态
目录的验证:
在server-1服务器上,在hdfs系统根目录下新建目录test,
使用命令:hadoopfs -mkdir /test创建目录,并使用hadoop fs -ls/ 查看目录 ,如下图:
然后在server-2和server-3上查看是否也已经创建了该文件夹:
如图所示 server-2与server-3上均已创建该文件夹。
再在server-1上删除test文件夹,查看server-2,server-3上是否已经被删除,删除文件夹命令:haddop fs -rm -r /test,如下图所示:
如图所示,server-2,server-3上的文件夹也都被删除了,说明文件夹验证成功。
文件的验证:
在server-1上新建文件,查看server-2,server-3上是否同时会生成文件。
在/user/wisedu/temp/目录下新建两个文件test1.txt,test2.txt,内容如下图:
将temp目录下的所有文件复制到hdfs系统的in目录下面,
命令:hadoop fs -put /usr/wisedu/temp/* /in 如下图所示:
虽然报错了,但是文件依然成功上传上去了,并且内容没有丢失。再看server-2和server-3上是否也生成了文件,如下图:
如图中所示,server-2,server-3上也都成功生成了文件,并且内容无误。
再删除test1.txt,测试是不是所有服务上都删除了该文件,
删除命令:hadoop fs -rm /in/test1.txt ,如下图所示:
如图所示,server-1上删除test1.txt后,server-2,server-3上也都不存在该文件了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。