实验报告书课程名:云计算技术题目:实验二Hadoop运行环境的配置实验类别【验证】班级:学号:姓名:评语:实验态度:认真()一般()较差()实验结果:正确()部分正确()错()实验理论:掌握()熟悉()了解()生疏()操作技能:较强()一般()较差()实验报告:较好()一般()较差()成绩:指导教师:批阅时间:年月日《云计算》实验报告-11.实验目的掌握使用Hadoop运行环境。2.实验要求Hadoop集群,各个节点之间相互ping通,并可以免密码相互登陆;运行环境java安装和配置。3.实验步骤前期步骤0:使用root账号登录[注]此部分的hosname、ip需与电机ip及拓扑图文件中分配的ip一致01查看hostname,如果是localhost或其它不对的名字,进行修改:查看hostname:hostname。若需要修改则进行后续操作:1)vi/etc/sysconfig/network修改机器名:将HOSTNAME=xxx改为HOSTNAME=gx-hadoopm(如g1-hadoopm,或2g1-hadoopm)2)使设置生效:两种方法:第一种:用hostname命令再次修改hostname,即时生效(此方法要跟第1)步结合使用,若只进行此命令,则再次启动后无效):hostnamegx-hadoopm(如g1-hadoopm)第二种:重启虚拟机:reboot,比较慢3)测试,输入命令查看hostname是否已修改:hostname02确认虚拟机的ip设置与电机ip及拓扑图文件中分配的ip一致[参考:]1)查看ip:ifconfig(实验环境下应该是已经配置好,一致的状态)2)若ip不一致,则修改ip,每一步编辑都保存退出:esc,:wqvi/etc/sysconfig/network-scripts/ifcfg-eth0[注,此文件可能存在,也可能不存在,可先进入目录查看一下]将IPADDR改成相应的地址。保存退出:esc,:wq在/etc/sysconfig/network文件内添加网关:GATEWAY=192.168.95.247//改成相应内容配置/etc/resolv.conf为如下内容:nameserver172.20.68.5//与上面DNS1的设置相同《云计算》实验报告-23)使设置生效:servicenetworkrestart或/etc/init.d/networkrestart或$ifdowneth0(比较慢)$ifupeth01、修改/etc/hosts文件配置,将ip与hostname对应起来使用root账号,登陆3台机器,,将每台机器的/etc/hosts文件均加上三台机器的ip与hostname的对应关系。[注]此部分的hosname、ip需与前面设置的一致,即与电机ip及拓扑图文件中分配的ip一致vi/etc/hosts[注]界面类似下图,需修改成自己机器的ip地址与hostname,如g1-hadoopm[注意],#号表示注释。(字母i是输入模式,敲一个字母i,etc是退出输入模式,上述ip输入完毕要退出且保存,用:wq!,:q是退出)在每一台机器上ping三台机器的hostname,要确保能够ping通。例如在gx-hadoopm上:pinggx-hadoopmpinggx-hadoops1pinggx-hadoops2以上操作的目的,是确保每台机器除了都能够使用ip地址访问到对方外,还可以通过主机名访问到对方。[注]退出正在执行的命令,用Ctrl+C2、创建hadooptest账号(1)每台机器均创建相同的账号:hadooptest,密码:hadooptest或自己设定例如在hadoopm上创建hadooptest账号,其他2台datanode也同样操作。(2)查看/home/hadooptest是否已经存在,若不存在,则执行如下操作:《云计算》实验报告-3创建hadooptest用户的home目录:mkdir/home/hadooptest3、使用hadooptest账号登陆三台机器退出root账号,如非必要以后不要用root账号登入系统,而改用hadooptest账号进行操作。例如使用hadooptest登陆hadoopm,其他俩台也使用hadooptest账号登陆和使用。4、配置免密码登陆Namenode向datanode发命令是靠ssh来发的,发命令肯定是在运行的时候发,发的时候肯定不希望发一次就要输入一次密码,因此我们需要实现NameNode无密码登陆到所有DataNode。三台机器,全部实现两两相互免密码登陆。[注]开始配置之前需要先安装ssh软件。root身份。实验环境有可能已经安装,若后续无法继续,则先安装sshserver。如下:$sudoapt-getinstallssh(1)三台机器均按照如下图所示,以hadooptest身份运行“ssh-keygen-trsa”。注意:另外2台也要运行此命令。(2)查看证书以hadooptest身份,进入hadooptest家目录的.ssh文件夹。查看id_rsa.pub证书同理,其他2台也可以看到类似证书。《云计算》实验报告-4(3)新建“认证文件”,在3台机器中运行如下命令,给每台机器新建“认证文件”[hadooptest@hadoopm~]$cd/home/hadooptest/.ssh/[hadooptest@hadoopm.ssh]$touchauthorized_keys注意:另外2台也要运行此命令。(4)交换证书首先,在hadoopm机器里,将自己的证书放到自己的“认证文件”里[hadooptest@hadoopm.ssh]$catid_rsa.pubauthorized_keys[hadooptest@hadoopm.ssh]$catauthorized_keys其次,虚拟机之间交换证书,有三种拷贝并设置证书方法:①用ssh-copy-id–i命令ssh-copy-id-i~/.ssh/id_rsa.pubhostname(otherHadoopnodes),如ssh-copy-id-i~/.ssh/id_rsa.pubhadoops1ssh-copy-id-i~/.ssh/id_rsa.pubhadoops2②用cat命令,还是以复制到hadoops1为例cat~/.ssh/id_rsa.pub|sshhadooptest@hadoops1'cat-~/.ssh/authorized_keys'③首先将公钥复制到其它节点,以hadoops1为例,~表示用户home目录scp~/.ssh/id_rsa.pubhadooptest@hadoops1:~/id_rsa.pub然后,以hadooptest用户登录hadoops1,将刚才拷过来的公钥导入到认证文件hadoops1的认证文件中。ls//查看用户home目录下是否存在文件id_rsa.pubcat~/id_rsa.pub~/.ssh/authorized_keys//在证书中追加公钥类似的,可将证书拷贝到hadoops2《云计算》实验报告-5最后,在hadoops1、hadoops2上执行类似的复制操作,将他们的证书复制到其它两台虚拟机上。完成之后,hadoopm机器里的authorized_keys的内容如下:同理,hadoops1机器里的authorized_keys也有三份证书,内容如下:同理,hadoops2机器里的authorized_keys也有三份证书,内容如下:《云计算》实验报告-6(5)修改证书文件权限为600chmod600authorized_keys(6)测试免密码登录是否成功;若不成功,请检验以上步骤。在hadoopm上,运行如下三条命令,继续免密码登录测试:sshhadoopm提示继续连接,选择“yes”,然后发现无需输入密码即可登录自己sshhadoops1提示继续连接,选择“yes”,然后发现无需输入密码即可登录hadoops1sshhadoops2提示继续连接,选择“yes”,然后发现无需输入密码即可登录hadoops2同理,在hadoops1和hadoops2上也继续同样测试。5、Jdk安装和java环境变量配置(1)安装JDK1.7jdk-7u40-linux-x64.rpm存放在root的用户目录/root目录下[hadooptest@hadoopm~]$suroot//以root身份安装jdk,输入root密码[root@hadoopmhadooptest]#mkdir/usr/java//创建一个java安装目录cd/usr/java//进入刚创建的java目录[root@hadoopmhadooptest]#rpm-ivh/root/jdk-7u40-linux-x64.rpm//安装jdk(2)Java环境变量配置继续以root操作,命令行中执行命令”vim/etc/profile”,在最下面加入以下内容,配置环境变量。[注意]/etc/profile这个文件很重要,后面Hadoop的配置还会用到,不要改掉其它配置。vim/etc/profile//编辑文档/etc/profile在文档末尾添加如下变量#setjavaenvironmentexportJAVA_HOME=/usr/java/jdk1.7.0_40//java安装目录exportJRE_HOME=/usr/java/1.7.0_40/jre《云计算》实验报告-7exportPATH=$PATH:$JAVA_HOME/binexportCLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib/rt.jar保存并退出使配置生效:1reboot(会比较慢)2source/etc/profile,用这个方法的话,需要用下面的步骤添加软链接才行ln-s-f测试java是否安装成功:(1)#java–version若结果是1.6.xxx,不是1.7.xxx,则表明java环境尚未配置好原因是实验环境里的CentOs系统的默认jdk是1.6.xx,解决:步骤1.#cd/usr/bin#ln-s-f/usr/java/jdk1.6.0_01/jre/bin/java#ln-s-f/usr/java/jdk1.6.0_01/bin/javac测试是否已经正常:#java–version若已经输出了正确的jdk版本,则步骤2不必再执行步骤2.Removetheoldemptyjavaenvironment#rm-f/usr/bin/java#rm-f/usr/bin/javac#rm-f/etc/alternatives/java#rm-f/etc/alternatives/javac最后,再次执行:source/etc/profile之后,java的HelloWorld测试程序应该可以正确执行。(2)用HelloWord程序测试。编辑源文件:viHelloWorld.java输入相应内容保存退出:esc,:wq《云计算》实验报告-8编译源文件:javacHelloWorld.java编译后将产生HelloWorld.class文件执行:javaHelloWorld4.结果与分析(1)截图《云计算》实验报告-9《云计算》实验报告-105.实验体会通过这次的实验熟悉并了Hadoop运行环境,并学会了如何使用它。这次实验成功完成了Hadoop集群,3个节点之间相互ping通,并可以免密码相互登陆,完成了运行环境java安装和配置。