Hadoop

xiaoxiao2021-02-27  177

/**温馨提示:该Linux系统使用的是CentOS6.5版本,hadoop-1.2.1,不同的Linux系统及版本可能有区别*/

一、Hadoop安装环境

在官网上下载hadoop1.2.1,并在Linux系统上解压至你所喜欢的目录,此处就不过多讲解了。 从Hadoop官网上可知,hadoop集群需要在Linux系统上安装ssl与rsync,CentOS默认都安装了,没安装的自己安装,此处也不过多讲解了。因为是进行分布式文件系统部署,所以至少需要开启三台虚拟机。(ps:本教程仅仅使用了三台虚拟机来简单介绍了一下分布式文件系统的部署,其中三台虚拟机的主机名分别为node1、node2、node3,其中node1为NameNode,node2与node3为DataNode)。

二、配置文件的修改

在node1上修改解压后的的目录中的:conf/core-site.xml文件 <configuration> <property> <name>fs.default.name</name> <value>hdfs://node1:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/usr/local/hadoop-1/tmp</value> </property> </configuration>

其中:

<value>hdfs://node1:9000</value>为hadoop分布式文件系统的协议及端口号,node1为主机名(ps:主机名不能为localhost,因为在Windows系统上访问localhost时访问不到Linux上的localhost),根据自己的Linux系统上的主机名来设置,9000为端口号,也可以根据自己的喜好来进行设置,其实此处就相当于设置hdfs中的NameNode为node1<value>/usr/local/hadoop-1/tmp</value>为临时文件保存的位置,也可根据自己的喜好来进行设置。 在node1上修改解压后的的目录中的:conf/hdfs-site.xml文件: <configuration> <property> <name>dfs.replication</name> <value>2</value> </property> </configuration>

设置hdfs的副本数,如果不设置,默认为3,其值必须小于或等于DataNode的数量。通常来说,默认的3个副本足够了,但因为只有两个DataNode,因此设置为2。

在node1上修改解压后的的目录中的:conf/slaves文件: node2 node3

即设置分布式文件系统中的DadaNode(ps:此处除了写主机名,写ip地址也是可以的)

在node1上修改解压后的的目录中的:conf/masters文件: node2

即设置分布式文件系统中的node2设置为SecondaryNameNode(ps:只能将DataNode设置为SecondNamenode,不能将NameNode设置为SecondNamenode)

在node1、node2、node3上修改解压后的的目录中的:conf/hadoop-env.sh文件 export JAVA_HOME=/usr/local/jdk/jdk1.7.0_55

即设置jdk环境变量(ps:根据自己的jdk安装目录进行设置)

在node1上修改解压后的目录中的:conf/mapred-site.xml <configuration> <property> <name>mapred.job.tracker</name> <value>node1:9001</value> </property> </configuration>

即设置MapReduce的架构-主从架构:

主JobTracker:

负责调度分配每一个子任务task运行于TaskTracker上,如果发现有失败的task就重新分配其任务到其它节点上。每一个hadoop集群中只有一个JobTracker,一般将它运行在Master节点上(ps:此处将JobTracker运行在node1上,即NameNode节点上)

从TaskTracker: TaskTracker主动与JobTracker通信,接收作业,并负责执行每一个任务,为了减少网络宽带,TaskTracker最好运行在HDFS的DataNode上。 设置ssh免密码登入:

简单介绍一下ssh免密码登入的好处,当启动hdfs时,因为DataNode部署在不同的服务器上,每启动一个DataNode就需要登入一下DataNode所在的服务器,如果DataNode有无数个,而且如果每台服务器的用户名和密码都不一样,想想有多恐怖吧。

设置本地ssh免密码登入(三台虚拟机上都执行以下命令): 执行命令:ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa

执行命令:cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

验证免密码登入,执行命令:ssh localhost

如果直接连接了,说明本地免密码登入设置成功,如果提示输入密码,说明本地免密码登入设置失败

设置跨服务器ssh免密码登入:

在设置本地ssh免密码登入时,会在Root目录下生成一个.ssh文件夹,并在该文件夹中生成一系列的密匙,跨服务器免密码登入需要将node1中的id_dsa.pub文件中的内容分别追加到node2与node3中的authorized_keys内容后。

复制node1中的id_dsa.pub到node2与node3的Root目录下:

执行命令:cd ~/.ssh

执行命令:scp id_dsa.pub root@node2:~

执行命令:scp id_dsa.pub root@node3:~

分别登入node2与node3这两台服务器,进入Root目录下,此时看到id_dsa.pub文件已存在于Root目录下: 执行命令:cd ~

执行命令:cat id_dsa.pub >> ~/.ssh/authorized_keys

验证免密码登入在node1这台服务器上:

执行命令:ssh node2

执行命令:ssh node3

如果直接连接了,说明本地免密码登入设置成功,如果提示输入密码,说明本地免密码登入设置失败

将node1中的配置文件全部复制到node2、node3这两台服务器上的hadoop中的配置文件中

进入node1中hadoop配置文件的目录:

执行命令:cd /usr/local/hadoop-1/hadoop-1.2.1/conf(根据自己的hadoop安装路径来定)执行命令:scp ./* root@node2:/usr/local/hadoop-1/hadoop-1.2.1/conf执行命令:scp ./* root@node3:/usr/local/hadoop-1/hadoop-1.2.1/conf 格式化NameNode:

进入node1中hadoop中的bin目录下

执行命令:cd /usr/local/hadoop-1/hadoop-1.2.1/bin执行命令:./hadoop namenode -format

验证分布式文件系统是否部署成功:

关闭node1、node2、node3上的防火墙: 在三台虚拟机上分别执行命令:service iptables stop 在node1上进入hadoop安装目录的bin目录下:

执行命令:cd /usr/local/hadoop-1/hadoop-1.2.1/bin

启动HDFS: 执行命令:./start-all.sh 在node1、node2、node3上面分别输入jps 执行命令:jps

在node1上如下图所示:node1上开启了NameNode与JobTracker

在node2上如下图所示:node2上开启了DataNode、SecondaryNameNode与TaskTracker

在node3上如下图所示:node3上开启了DataNode与TaskTracker

在浏览器中访问NameNode与Map/Reduce管理平台

*注:本人node1所在虚拟机的ip地址为192.168.204.128,根据自己ip地址来进行访问,这个就不多说了,NameNode与Map/Reduce默认端口分别是50070与50030

使用浏览器访问:

192.168.204.128:50070

192.168.204.128:50030

转载请注明原文地址: https://www.6miu.com/read-13010.html

最新回复(0)