简单搭建hadoop运行环境
Hadoop是Apache软件基金会旗下的一个开源分布式计算平台。以Hadoop分布式文件系统(HDFS,Hadoop Distributed Filesystem)和MapReduce(Google MapReduce的开源实现)为核心的Hadoop为用户提供了系统底层细节透明的分布式基础架构
对于Hadoop的集群来讲,可以分成两大类角色:Master和Salve。一个HDFS集群是由一个NameNode和若干个DataNode组成的。其中NameNode作为主服务器,管理文件系统的命名空间和客户端对文件系统的访问操作;集群中的DataNode管理存储的数据。MapReduce框架是由一个单独运行在主节点上的JobTracker和运行在每个集群从节点的TaskTracker共同组成的。主节点负责调度构成一个作业的所有任务,这些任务分布在不同的从节点上。主节点监控它们的执行情况,并且重新执行之前的失败任务;从节点仅负责由主节点指派的任务。当一个Job被提交时,JobTracker接收到提交作业和配置信息之后,就会将配置信息等分发给从节点,同时调度任务并监控TaskTracker的执行。
从上面的介绍可以看出,HDFS和MapReduce共同组成了Hadoop分布式系统体系结构的核心。HDFS在集群上实现分布式文件系统,MapReduce在集群上实现了分布式计算和任务处理。HDFS在MapReduce任务处理过程中提供了文件操作和存储等支持,MapReduce在HDFS的基础上实现了任务的分发、跟踪、执行等工作,并收集结果,二者相互作用,完成了Hadoop分布式集群的主要任务
一、安装前的准备
已安装"SoftwareDevelopment Workstation"软件包的linux虚拟机3台
jdk-6u45-linux-x64.bin安装包、hadoop-1.0.0.tar.gz安装包
1、设定linux虚拟机IP地址及主机名如下:
主机名 IP地址 master 192.168.232.129 salve1 192.168.232.130 salve2 192.168.232.131
2、向/etc/hosts文件添加内容,使虚拟机之间使用主机名能够互ping(非常重要!!!)
# 可以只修改一个主机的/etc/hosts文件,然后用scp命令远程传输覆盖其他主机的hosts文件 [root@master ~]# vim /etc/hosts master 192.168.232.129 salve1 192.168.232.130 salve2 192.168.232.131 [root@master ~]# scp /etc/hosts root@salve1:/etc/hosts [root@master ~]# scp /etc/hosts root@salve2:/etc/hosts # 测试 [root@master ~]# ping master [root@master ~]# ping salve1 [root@master ~]# ping salve2
3、设置三台主机ssh无密码验证配置
# 在master主机上生成密码对 [root@master ~]# ssh-keygen -t rsa # 敲两次回车,便会在/root/.ssh目录下生成id_rsa.pub(公钥文件)、id_rsa(私钥文件) # 将公钥文件追加到/root/.ssh/authorized_keys文件中,并测试是否可以实现无密码登录 [root@master ~]# cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys [root@master ~]# ssh master # 将公钥文件远程传输到salve1、salve2主机上 [root@master ~]# scp .ssh/id_rsa.pub root@salve1:/root/.ssh/ [root@master ~]# scp .ssh/id_rsa.pub root@salve2:/root/.ssh/ # 将传输过来的公钥文件追加到authorized_keys,实现master主机ssh无密码登陆salve1、salve2主机 [root@salve1 ~]# cat .ssh/id_rsa.pub >> .ssh/authorized_keys [root@salve2 ~]# cat .ssh/id_rsa.pub >> .ssh/authorized_keys # 测试 [root@master ~]# ssh salve1 [root@master ~]# ssh salve2 # 需要注意的是,以上操作还需要在其他主机上操作一次,以实现三台主机均可以相互无密码登录 # 如果在以上操作完成后,出现登录失败的情况,请修改三个主机的ssh配置文件,修改以下参数,并重启ssh服务 [root@master ~]# vim /etc/ssh/ssh_config RSAAuthentication yes # 启用RSA认证 PubkeyAuthentication yes # 启用公钥、私钥配对认证 [root@master ~]# service sshd restart
二、开始安装配置
1、Java环境安装(如果在安装linux时安装了SoftwareDevelopment Workstation软件包,这一步可跳过)
1.1、安装JDK
所有机器上都要安装JDK,现在就在master主机安装,然后其他主机按照步骤重复进行即可
# 创建/usr/java目录,将jdk-6u45-linux-x64.bin复制到此目录下,赋予执行权限,并执行 [root@master ~]# mkdir /usr/java [root@master ~]# cp jdk-6u45-linux-x64.bin /usr/java/ [root@master ~]# cd /usr/java/ [root@master java]# chmod +x jdk-6u45-linux-x64.bin [root@master java]# ./jdk-6u45-linux-x64.bin [root@master java]# lsjdk1.6.0_45 jdk-6u45-linux-x64.bin # 安装完成后发现当前目录下多了 jdk1.6.0_45 文件夹,安装结束
1.2、配置环境变量
# 编辑/etc/profile文件,在尾部追加以下内容 [root@master ~]# vim /etc/profile # set java environment export JAVA_HOME=/usr/java/jdk1.6.0_45 export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib export PATH=$PATH:$JAVA_HOME/bin:$$JAVA_HOME/jre/bin # 执行下面命令使其配置立即生效,并进行测试 [root@master ~]# source /etc/profile [root@master ~]# java -version java version "1.6.0_45" OpenJDK Runtime Environment (rhel-2.4.3.3.el6-x86_64 u45-b15) OpenJDK 64-Bit Server VM (build 24.45-b08, mixed mode)
1.3、安装配置其他主机(同上,略)
2、hadoop集群安装配置
2.1、hadoop集群安装
所有机器上都要安装JDK,现在就在master主机安装,然后其他主机按照步骤重复进行即可
# 将软件包解压到/usr/目录下,并重命名 [root@master ~]# tar –zxvf hadoop-1.0.0.tar.gz -C /usr/ [root@master ~]# cd /usr/ [root@master usr]# mv hadoop-1.0.0 hadoop # 在hadoop目录下创建tmp文件夹 [root@master usr]# cd hadoop [root@master hadoop]# mkdir tmp
2.2、配置环境变量
# 编辑/etc/profile文件,在尾部追加以下内容 [root@master ~]# vim /etc/profile # set hadoop path export HADOOP_HOME=/usr/hadoop export PATH=$PATH:$HADOOP_HOME/bin # 执行下面命令使其配置立即生效 [root@master ~]# source /etc/profile
2.3、配置hadoop
1)配置hadoop-env.sh
该文件位于/usr/hadoop/conf目录下
[root@master conf]# vim hadoop-env.sh # 如果是自己配置的JDK,则添加以下内容 # set java enviroment export JAVA_HOME=/usr/java/jdk1.6.0_45 # 如果是安装SoftwareDevelopment Workstation软件包,则添加以下内容 # set java enviromentexport JAVA_HOME=/usr
2)配置core-site.xml文件
[root@master conf]# vim core-site.xml <configuration> <property> <name>hadoop.tmp.dir</name> <value>/usr/hadoop/tmp</value> <description>A base for other temporary directories</description> </property> <property> <name>fs.default.name</name> <value>hdfs://192.168.232.129:9000</value> </property> </configuration>
3)配置hdfs-site.xml文件
[root@master conf]# vim hdfs-site.xml <configuration> <property> <name>dfs.replication</name> <value>1</value> </property> </configuration>
4)配置mapred-site.xml文件
[root@master conf]# vim mapred-site.xml <configuration> <property> <name>mapred.job.tracker</name> <value>http://192.168.232.129:9001</value> </property> </configuration>
5)配置masters文件
# 将原来的localhost去掉 [root@master conf]# vim masters 192.168.232.129 # master主机的IP地址 # master # master主机名(要保证hosts文件已修改)
6)配置salves文件
[root@master conf]# vim slaves 192.168.232.130 # salve1的IP地址 192.168.232.131 # salve2的IP地址 # salve1 # salve1主机名(要保证hosts文件已修改) # salve1 # salve2主机名(要保证hosts文件已修改)
master主机配置完成
2.4、配置salve1主机、salve2主机
# 只需要将配置好的hadoop文件夹远程传输到salve1和salve2上即可 [root@master ~]# scp -r /usr/hadoop root@salve1:/usr/ [root@master ~]# scp -r /usr/hadoop root@salve2:/usr/ # 并且修改salve1主机、salve2主机的/etc/profile文件 [root@salve1 ~]# vim /etc/profile # set hadoop pathexport HADOOP_HOME=/usr/hadoop export PATH=$PATH:$HADOOP_HOME/bin # 执行下面命令使其配置立即生效 [root@salve1 ~]# source /etc/profile
配置完成
三、启动及验证
1、格式化HDFS文件系统(只需一次,下次启动不再需要格式化)
[root@master ~]# hadoop namenode -format
2、启动hadoop
[root@master ~]# start-all.sh
3、验证hadoop
3.1、用java自带的jps查看进程
# 在master上查看 [root@master ~]# jps 5434 JobTracker 4447 SecondaryNameNode 5221 NameNode 5535 Jps # 在salve1上查看 [root@salve1 ~]# jps 4313 Jps 4260 TaskTracker 4171 DataNode
3.2、用"hadoop dfsadmin -report"查看Hadoop集群的状态
[root@master ~]# hadoop dfsadmin -report
3.3、用网页查看集群
1)访问http://192.168.232.129:50030
2)访问http://192.168.232.129:50070
转载于:https://blog.51cto.com/zhiheren/1876128