Hadoop2.6.0安装----环境准备
- 格式:docx
- 大小:302.34 KB
- 文档页数:11
准备工作:1、笔记本4G内存,操作系统WIN7 (屌丝的配置)2、工具VMware Workstation3、虚拟机:CentOS6.4共四台虚拟机设置:每台机器:内存512M,硬盘40G,网络适配器:NAT模式选择高级,新生成虚机Mac地址(克隆虚拟机,Mac地址不会改变,每次最后手动重新生成)编辑虚拟机网络:点击NAT设置,查看虚机网关IP,并记住它,该IP在虚机的网络设置中非常重要。
NAT设置默认IP会自动生成,但是我们的集群中IP需要手动设置。
本机Win7 :VMnet8 网络设置注意:克隆的虚拟机网卡MAC地址已经改变,但是文件里面没有修改,我们启动网络服务会遇到下面错误:Bringing up interface eth0: Error: No suitable device found: no device found for cone解决办法:# vi /etc/udev/rules.d/70-persistent-net.rules(内容如下图)查看ifcfg-eth0 中的“HWADDR ”是否和第一个网卡启动信息中的ATTR{address}值相同,如果两个值相同则删除eth0中的所有内容在eth1中进行相关IP配置安装JDK72.1下载JDK安装包安装版本:jdk-7u60-linux-x64.gz查看最新:/technetwork/java/javase/downloads/index.html2.2解压安装我们把JDK安装到这个路径:/usr/lib/jvm如果没有这个目录,我们就新建一个目录cd /usr/libsudomkdirjvm将jdk-7u60-linux-x64.tar.gz复制到linux桌面tarzxvf jdk-7u60-linux-x64.tar.gz -C /usr/lib/jvm2.3配置环境变量(1)只对当前用户生效vim ~/.bashrcexport JAVA_HOME=/usr/lib/jvm/jdk1.7.0_60export JRE_HOME=${JAVA_HOME}/jreexport CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/libexport PATH=${JAVA_HOME}/bin:$PATH保存退出,然后输入下面的命令来使之生效source ~/.bashrc(2)对所有用户生效(root用户登录)vim /etc/profileexport JAVA_HOME=/usr/lib/jvm/jdk1.7.0_60export JRE_HOME=${JAVA_HOME}/jreexport CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/libexport PATH=${JAVA_HOME}/bin:$PATH保存退出,然后输入下面的命令来使之生效source /etc/profile2.4配置默认JDK(一般情况下这一步都可以省略)由于一些Linux的发行版中已经存在默认的JDK,如OpenJDK等。
所以为了使得我们刚才安装好的JDK版本能成为默认的JDK版本,我们还要进行下面的配置。
执行下面的命令:sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.7.0_60/bin/java 300sudo update-alternatives --install /usr/bin/javacjavac /usr/lib/jvm/jdk1.7.0_60/bin/javac 300注意:如果以上两个命令出现找不到路径问题,只要重启一下机器在重复上面两行代码就OK了。
执行下面的代码可以看到当前各种JDK版本和配置:sudo update-alternatives --config java2.5测试在linux命令行,使用java -version来查看java版本关闭防火墙以及配置主机名2.23SSH主要通过RSA算法来产生公钥与私钥,在数据传输过程中对数据进行加密来保障数据的安全性和可靠性,公钥部分是公共部分,网络上任一结点均可以访问,私钥主要用于对数据进行加密,以防他人盗取数据。
总而言之,这是一种非对称算法,想要破解还是非常有难度的。
Hadoop集群的各个结点之间需要进行数据的访问,被访问的结点对于访问用户结点的可靠性必须进行验证,hadoop采用的是ssh的方法通过密钥验证及数据加解密的方式进行远程安全登录操作,当然,如果hadoop对每个结点的访问均需要进行验证,其效率将会大大降低,所以才需要配置SSH免密码的方法直接远程连入被访问结点,这样将大大提高访问效率。
namenode节点配置免密码登陆其他节点,每个节点都要产生公钥密码,Id_dsa.pub为公钥,id_dsa为私钥,紧接着将公钥文件复制成authorized_keys文件,这个步骤是必须的,过程如下:a. 每个节点分别产生密钥# 提示:(1):.ssh目录需要755权限,authorized_keys需要644权限;(2):Linux防火墙开着,hadoop需要开的端口需要添加,或者关掉防火墙;(3):数据节点连不上主服务器还有可能是使用了机器名的缘故,还是使用IP地址比较稳妥。
4 b. name01(192.168.85.128)主库上面:namenode主节点hadoop账户创建服务器登陆公私钥:mkdir -p /home/hadoop/.sshchownhadoop.hadoop -R /home/hadoop/.sshchmod 755 /home/hadoop/.sshsu - hadoopcd /home/hadoop/.sshssh-keygen -t dsa -P '' -f id_rsa注意这里rsa[hadoop@name01 .ssh]$ ssh-keygen -t rsa5如果错误执行:setenforce 06Id_dsa.pub为公钥,id_dsa为私钥,紧接着将公钥文件复制成authorized_keys文件,这个步骤是必须的,过程如下:7[hadoop@name01 .ssh]$ cat id_rsa.pub >>authorized_keys8data01和data02执行以上相同的操作,生产authorized_keys9 c. 构造3个通用的authorized_keys在name01(192.168.85.128)上操作:su - hadoopcd /home/hadoop/.sshscp hadoop@data01:/home/hadoop/.ssh/id_rsa.pub ./id_dsa.pub.data01scp hadoop@data02:/home/hadoop/.ssh/id_rsa.pub ./id_dsa.pub.data02cat id_rsa.pub.data01 >>authorized_keyscat id_rsa.pub.data02 >>authorized_keys10cat authorized_keys11看到authorized_keys文件里面有3行记录,分别代表了访问name01,data01,data02的公用密钥。
把这个authorized_keys公钥文件copy到data01和data02上面同一个目录下。
12copy文件authorized_keys,然后通过hadoop远程彼此连接name01、data01、data02就可以免密码scpauthorized_keys hadoop@data01:/home/hadoop/.ssh/scpauthorized_keys hadoop@data02:/home/hadoop/.ssh/然后分别在name01、data01、data02以hadoop用户执行权限赋予操作su - hadoopchmod 600 /home/hadoop/.ssh/authorized_keyschmod 700 -R /home/hadoop/.ssh13测试ssh免秘钥登录,首次连接的时候,需要输入yes,之后就不用输入密码直接可以ssh过去了。
14 d. 验证name01、data01、data02任何ssh免密码登录[hadoop@data02 ~]$ ssh name01Last login: Thu Aug 21 02:38:46 2014 from data02[hadoop@name01 ~]$ ssh data01Last login: Thu Aug 21 02:30:35 2014 from localhost.localdomain[hadoop@data01 ~]$ ssh data02Last login: Thu Aug 21 02:32:57 2014 from localhost.localdomain[hadoop@data02 ~]$ ssh data01Last login: Thu Aug 21 02:39:55 2014 from name01[hadoop@data01 ~]$ ssh name01Last login: Thu Aug 21 02:39:51 2014 from data02[hadoop@name01 ~]$ ssh data02Last login: Thu Aug 21 02:39:58 2014 from data01[hadoop@data02 ~]$注意:安装ssh免密码登录的时候ssh-keygen -t rsa中rsa是一种加密方式,还有一种dsa,每台机器上要采用相同的方式解决ssh配置无密码登陆后再次出现请求输入密码的情况引用于/Linux/2013-02/79158.htm主机ip:192.168.163.100(hostname:node0)ssh无密码登陆的远程机ip:192.168.163.101(hostname:node1)首先要修改主机和ssh连接到的远程机的配置文件:vi /etc/ssh/sshd_config(要确保这些字符前无注释符号“#”)RSAAuthentication yesPubkeyAuthentication yesAuthorizedKeysFile .ssh/authorized_keysPasswordAuthentication yesPeimitEmptyPasswords yes1.在本地机上输入命令:ssh-keygen -t rsa2.接着一路按回车,默认情况下ssh生成的公密钥会被存储到/root/.ssh这个文件夹下,分别为id_rsa和id_rsa.pub3.在本地机上创建文件authorized_keystouch /root/.ssh/authorized并将公钥追加到authorized_keys文件中:cat id_rsa.pub >>authorized_keys4.修改文件夹/root/.ssh的权限:(本地机和远程机都要修改)chmod 700 /root/.ssh5.修改文件的属性:chmod 600 /root/.ssh/authorized_keys6.将公钥复制到ip地址为192.168.163.101的远程机上:ssh-copy-id -i /root/.ssh/id_rsa/pub root@192.168.163.101笔者在输入命令时已经在远程主机上创建了文件夹及文件如下:/root/.ssh/authorized_keys并且,已经按上文修改了权限/.ssh (700) /.ssh/authorized(600)(实践证明在传送公钥时,这个命令好于scp命令)7.在本地机上执行命令:ssh-add /root/.ssh/id_rsa这个是为了将公钥添加进来。