/**温馨提示:该Linux系统使用的是CentOS6.5版本,hadoop-1.2.1,不同的Linux系统及版本可能有区别*/
其中:
<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执行命令: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