当前位置: 首页 > 科技观察

三台主机搭建Hadoop小集群

时间:2023-03-15 15:53:15 科技观察

部署环境:OS:Redhat5.5EnterpriseJDK:jdk1.6.0_32Hadoop:Hadoop-0.20.2VMWare:7.0节点排列和网络拓扑:节点类型      节点IP      节点hostnamemasternode    192.168.40.5  masterslavenode     192.168.40.5  master(此时master既是主节点又是从节点)          192.168.40.6  salve1192..40.7  slave2secondaryNamenode192.168.40.5  master(此时master既是主节点,又是从节点,也是secondaryNameNode)配置步骤:1.网络配置首先关闭三者的防火墙虚拟机。步骤参考:关闭防火墙先用VMWare安装三台虚拟机(可以先安装一台,再克隆两台),根据节点排列和网络拓扑配置网络,先配置master的网络节点:①静态网络IP配置参考VMwareRedhat网络配置。设置三台虚拟机的IP②修改主机名:vi/etc/hosts(用于IP解析),添加192.168.40.5master192.168.40.6slave1192.168.40.7slave2③按照这个流程和一样的数据(除了不同)配置三个虚拟机2.安装jdkHadoop是用java开发的。Hadoop编译和mapreduce运行需要用到JDK,所以必须安装JDK。①下载jdk,http://www.oracle.com/technetwork/java/javase/downloads/index.html②在用户的根目录下,创建bin文件夹:mkdir~/bin(也可以放在其他地方,只是个人习惯)③更改执行权限:chmodu+xjdk-6u26-linux-i586.bin④执行文件:sudo-s./jdk-6u26-linux-i586.bin,一路确认⑤配置环境变量:vi~/.bash_profile,添加:exportJAVA_HOME=/root/bin/jdk1.6.0_32exportPATH=$PATH:$JAVA_HOME/bin⑥使配置文件生效:source~/.bash_profile⑦验证是否配置成功:whichjava[root@master~]#whichjava/root/bin/jdk1.6.0_32/bin/也可以输入java-version,java,javac确认java配置生效⑧同样配置其他两台主机3.建立ssh互信Hadoop需要启动各台主机的daemon进程在slave表中通过ssh互信,所以SSH是必须安装的(redhat5.5Enterprise默认安装)。但是不需要建立ssh互信(即免密码登录),但是如果不配置,每次启动hadoop时,都需要输入密码才能登录到各台机器的Datanode,并且一般的hadoop集群往往有几百台或者几千台机器,所以一般来说都会配置ssh互信。①生成密钥,配置ssh免密码登录主机(在master主机上)ssh-keygen-tdsa-P''-f~/.ssh/id_dsacat~/.ssh/id_dsa.pub>>~/.ssh/authorized_keys②复制authorized_keys文件到两台slave主机scpauthorized_keysslave1:~/.ssh/scpauthorized_keysslave2:~/.ssh/③查看是否可以从master免密码登陆slave机器sshslave1(输入在master主机上)登录成功则配置成功,exit退出Slave1返回master4.配置Hadoop①下载:点击进入下载页面,选择hadoop-0.20.2.tar.gz②放入~/bin并解压:tar-xzvfhadoop-0.20.2.tar.gz③解压后进入:~/bin/hadoop-0.20.2/conf/,修改配置文件:修改hadoop-env.sh:exportJAVA_HOME=/root/bin/jdk1.6.0_32转载并注明出处:博客园石http://www.cnblogs.com/shitouer/hadoop-env.sh中有这一行,默认注释掉。去掉注释,把JAVA_HOME改成你的java安装目录修改core-site.xmlfs.default.namehdfs://master:9000Hadoop.tmp.dir</name>/tmp/hadoop-root转载并注明出处:博客园石头儿http://www.cnblogs.com/shitouer/注1:Hadoop分布式文件系统文件存储位置是基于hadoop.tmp.dir目录,namenode命名空间存储位置是${hadoop.tmp.dir}/dfs/name,datanode数据块存储位置是${hadoop.tmp.dir}/dfs/data,所以设置好hadoop.tmp.dir目录后,其他重要的目录都在这个目录下,是一个根目录注2:fs.default.name,设置namenode所在的host,端口号是9000注3:core-site.xml对应一个core-default.xml,hdfs-site.xml对应一个hdfs-default.xml,mapred-site.xml对应一个mapred-default。xml。这三个defaultult文件中都有一些默认的配置。现在我们修改这三个站点文件,默认覆盖一些配置,修改hdfs-site.xmldfs.replication3/property>dfs.replication,设置dfs.replication的个数数据块的复制数,默认为3,如果slave节点数小于3,写入对应的1或2修改mapred-site.xmlmapred.job.trackerhttp://master:9001mapred.job.tracker,设置jobtracker所在的机器,端口号9001修改mastersmaster虽然masters是masters写的,但是个人感觉,这里不指定master节点,但是要配置secondaryNameNode修改slavesmasterslave1slave2来配置集群④所有slave节点添加hadoop环境变量,source~/.bash_profile使其生效bin:$HADOOP_HOME/bin⑤将已经配置好的hadoop-0.20.2复制到另外两台主机上,做同样的配置⑥至此hadoop集群配置已经完成,进入hadoop,可以看到hadoop-relatedoperations[root@master~]#hadoopUsage:hadoop[--configconfdir]COMMANDwhereCOMMANDisoneof:namenode-formatformattheDFSfilesystemsecondarynamenoderuntheDFSsecondarynamenodenamenoderuntheDFSnamenodedatanoderunaDFSdatanodedfsadminrunaDFSadminclientmradminrunaMap-ReduceadminclientfsckrunaDFSfilesystemcheckingutilityfsrunagenericfilesystemuserclientbalancerrunaclusterbalancingutilityjobtrackerruntheMapReducejobTrackernodepipesrunaPipesjobtasktrackerrunaMapReducetaskTrackernodejobmanipulateMapReducejobsqueuegetinformationregardingJobQueuesversionprinttheversionjarrunajarfiledistcp递归复制文件或目录archive-archiveNameNAME*createahadooparchivedaemonlogget/settheloglevelforeachdaemonorCLASSSNAMEruntheclassnamedCLASSNAMEmostcommandsprinthelpwheninvokedw/oparameters.⑦此时先格式化hadoop并在命令行执行,hadoopnamenode-format⑧启动hadoop并在命令行执行,start-all.sh,或执行start-dfs.sh,再执行start-mapred.sh⑨输入jps查看启动的服务进程主节点:[root@master~]#jps25429SecondaryNameNode25500JobTracker25201NameNode25328DataNode18474Jps25601TaskTrackers从节点:[root@slave1~]#jps4469TaskTracker49388Datajps2显示2,表示对应的服务进程启动成功。圈10(数量,①这样的圈拉不出来(⊙o⊙))查看hdfs分布式文件系统hadoopfs-ls/的文件目录结构,此时发现是空的,因为有确实没什么,运行命令,可以新建文件夹:hadoopfs-mkdir/newDir再次执行hadoopfs-ls/,会看到newDir文件夹,关于hadoopfs命令,见:HDFS命令圈11runhadoop类似helloworld程序本来,都是用wordcount运行的,但是你得创建文件夹之类的。示例中有一个更简单的程序可以计算π的值。让我们计算一下。进入hadoop目录,运行如下:[root@slave1hadoop-0.20.2]#hadoopjarhadoop-0.20.2-examples.jarpi42NumberofMaps=4SamplesperMap=2WroteinputforMap#0WroteinputforMap#1WroteinputforMap#2WroteinputforMap#3StartingJob12/05/2009:45:19ToprosinputforMap205/2009:45:19INFOmapred.JobClient:Runningjob:job_201205190417_000512/05/2009:45:20INFOmapred.JobClient:map0%reduce0%12/05/2009:45:30INFOmapred.Jobreduce%50%Client:map200/12:45:31INFOmapred.JobClient:map100%reduce0%12/05/2009:45:45INFOmapred.JobClient:map100%reduce100%12/05/2009:45:47INFOmapred.JobClient:Jobcomplete:job_201205190417_000512/20940INFOmapred.JobClient:计数器:1812/05/2009:45:47INFOmapred.JobClient:JobCounters12/05/2009:45:47INFOmapred.JobClient:Launchedreducetasks=112/05/2009:45:47INFOmapred.JobClient:Launchedmaptasks=412/05/2009:45:47INFOmapred.JobClient:Data-localmaptasks=412/05/2009:45:47INFOmapred.JobClient:FileSystemCounters12/05/2009:45:47INFOmapred.JobClient:FILE_BYTES_READ=9412/05/2009:45:47INFOmapred.JobClient:HDFS_BYTES_READ=47212/05/2007INFOmap45:.JobClient:FILE_BYTES_WRITTEN=33412/05/2009:45:47INFOmapred.JobClient:HDFS_BYTES_WRITTEN=21512/05/2009:45:47INFOmapred.JobClient:Map-ReduceFramework12/05/2009:45:47INFOmapred.Job1client/Red05/2009:45:47INFOmapred.JobClient:Combineoutputrecords=012/05/2009:45:47INFOmapred.JobClient:Mapinputrecords=412/05/2009:45:47INFOmapred.JobClient:Reduceshufflebytes=11212/05/2009:45:47INFOmapred。JobClient:Reduceoutputrecords=012/05/2009:45:47INFOmapred.JobClient:SpilledRecords=1612/05/2009:45:47INFOmapred.JobClient:Mapoutputbytes=7212/05/2009:45:47INFOmapred.JobClient:Mapinputbytes=9612/05/2009:45:47INFOmapred.JobClient:Combineinputrecords=012/05/2009:45:47INFOmapred.JobClient:Mapinputrecords=812/05/2009:45:47INFOmapred.JobClient:Findishcords8=812/05/2009:45:47INFOmapred.JobClient:Reducedcords8=812/05/2009:45:47952secondsEstimatedvalueofPiis3.50000000000000000000计算出的PI值为3.5,还是比较接近的。至于输出日志,我就不介绍了。以后多学一点,可以多做一些了解Hadoop三节点集群的配置。我会在这里介绍它。接下来,我将介绍它。如何在windows远程连接hadoop,配置eclipse开发调试MapReduce。原文链接:https://img.ydisp.cn/news/20220914/jvggbkl01ee.html【编者推荐】Apache.htaccess文件的8个用法Hadoop从Yahoo到GoogleHadoop集群的技术转型及Hadoop性能优化Facebook实时信息系统:HBase每月存储1350亿条信息