因公司项目打算往hadoop方向走,也打算正式的学习一下。第一次在工作中听到hadoop还是在4年前,当时我们公司的一个技术大拿跟我说有时间可以考虑学习一下hadoop。当时所在的是属于为国企提供软件服务的小公司,其所需的技术含量和处理的数据量感觉完全跟所谓的“大数据”挂不上勾.后面从该公司来到深圳之后进入现在的公司,才正式的接触到亿级以上的数据量的处理。也正是从接触这种亿级以上的数据量的处理时才真正的对所谓的性能优化有所了解和学习。采用的是传统的IOE架构,在日常工作中经常因程序运行性能问题而需分析和优化oracle的执行计划、索引等问题。随着公司业务量增长和前端数据结构方式变更,数据量猛增,慢慢的oracle已经表现得非常吃力。平时的运维成本也逐步增加(最主要是调优)。因此打算引入Hadoop来解决其中一部分非常耗时和重要的分析型计算。

  本文采用在VMware上面安装Redhat6.5 64位操作系统。hadoop版本为2.7.3.此处操作系统强烈建议64位,否则需要对hadoop进行一些编译才能使用。

   在虚拟机上面创建配置好一台,然后进行克隆。最终准备三台虚拟机。  

         hadoopMaster (192.168.1.150) 

         hadoopSlaver01(192.168.1.151)

         hadoopSlaver02(192.168.1.152)

   此处IP地址刚开始设置的时候是从100开始(101、102、103),因为在虚拟机里面来回切换非常麻烦。打算使用xshell或者其他的工具软件从宿主机连到虚拟机进行操作。但发现ssh会经常连不上或者连上之后经常性的断。检查各种配置防火墙、ssh配置等一直定位不到准确的问题。后面在一篇文章中发现有提到IP冲突,一开始检查没有发现(三台虚拟机是100、101、102,宿主机104,完全没冲突啊)。后面在另外一篇关于路由器的文章中介绍到DHCP默认是从100开始分配地址(不管文章本身是否正确,但我家里的确实是从100开始分配)。乍一看还是没有发现到问题,这时候我老婆突然跑过来跟我说手机上不了网了,我看着她手上的手机立马跑到路由器查看,结果:

      Redhat 6.5 Hadoop安装详解_Redhat

     跟家里的手机和Ipad地址冲突!!!!!!


  主要安装步骤:

    1、安装Redhat6.5

    2、操作系统相关设置

    3、安装和配置JDK

    4、配置和测试Hadoop集群

    


  1、安装Redhat6.5

     1、按照正常步骤安装好Redhat6.5(选择base server,mini后面需要手动安装的程序包太多,Desktop安装了太多无用的程序包)

    2、安装完只有需要配置自动挂载安装镜像文件,然后配置yum本地库指向挂载目录。具体步骤:http://jingyan.baidu.com/article/bad08e1e9900ec09c8512105.html (可解决后面程序需要安装的软件包,此步骤不是hadoop安装成功的必要条件,可以在需要安装的时候手动挂载)

    3、如果需要想让宿主机与虚拟机实现文件共享,先下载VMTools工具包,设置虚拟机共享目录.磨刀不误砍柴工。

   4、以上操作系统的安装请自行查询。不再一一详解。

   5、虚拟机的网络模式采用桥接模式,使每一台虚拟机都成为局域网内一台独立的电脑

   

  2、操作系统相关设置

    •   关闭防火墙和Selinux

        鉴于初次安装及属于自己学习环境,为了不被防火墙等各种限制。在Master和Slaver上都直接关闭防火墙和Selinux

        #/etc/selinux/config 文件中的 SELINUX="" 为 disabled ,然后重启(永久有效)

        #chkconfig iptables off 关闭防火墙 (永久有效)

    •   配置固定IP

        vi  /etc/sysconfig/network-scripts/ifcfg-eth0   #编辑配置文件,添加修改以下内容

        BOOTPROTO=static   #启用静态IP地址

        ONBOOT=yes  #开启自动启用网络连接

        IPADDR=192.168.1.150 #设置IP地址(配置信息参照宿主机)

        NETMASK=255.255.255.0  #设置子网掩码

        GATEWAY=192.168.0.1   #设置网关

        DNS1=8.8.8.8 #设置主DNS

        DNS2=8.8.4.4 #设置备DNS

        保存后 service network restart重启网络

    •   修改主机名和IP映射

        #修改主机名

         #vim /etc/sysconfig/network

         NETWORKING=yes

         HOSTNAME=hadoop 

         #修改IP映射

         vim /etc/hosts

         192.168.1.150 hadoopMaster

         192.168.1.151 hadoopSlaver01

         192.168.1.152 hadoopSlaver02

         #注释掉127.0.0.1 localhost的配置,在haoop集群验证的时候因为这个配置报错。

    •   创建hadoop用户 

              

              # useradd -d /home/hadoop -m hadoop

              # passwd hadoop

              # 设置密码

              # visudo 通过visudo命令修改/etc/sudoers文件

              在root ALL=(ALL) ALL,在这行后面添加:hadoop ALL=(ALL) ALL

              可以通过sudo 命令使hadoop用户临时获取root权限(避免使用root用户登录和操作)。后续操作全部使用hadoop用户,如果没有权限则使用sudo.

              

    •  配置ssh免密码登录   

          因为hadoop是一个在运行在集群只是的软件,自然需要在多台服务器之间进行通信和操作。怎么让集群里的各个机器之间进行安全通信而不需要用户每次输入授权密码呢?这就是ssh免密码登录的作用所在。可以理解成它就是将访问从对称密码(即传统的用户名和密码)改成非对称密码进行访问

          在配置ssh免密码登录之前请自行先了解RSA非对称加密算法相关知识。


在Master上面生成RSA私钥和公钥

将公钥id_rsa.pub复制到authorized_keys文件中

将authorized_keys复制到需要免密码登录的主机(Slaver01和Slaver02)中(注意权限为600,不能多不能少,少了没法执行,多了系统会认为不安全)

简单来说就是将Master的公钥分发给各个slaver中,Master使用自己的私钥进行加密发送给Slaver。Slaver通过Master的公钥来进行解密确认身份。因为在RSA非对称加密算法中用公钥加密的内容只能用私钥解密,用私钥加密的内容只能 用公钥解密。这样Slaver就能够确认消息一定是从Master发送过来且是没有被篡改的。

      

  3、安装和配置JDK  

    1、JDK版本需要在1.7+,本文安装的是JDK1.8

    安装步骤:

     cd /usr

     mkdir java

      a)将jdk-8u60-linux-x64.tar.gz拷贝到java目录下

      b)解压jdk到当前目录

         tar -zxvf jdk-8u60-linux-x64.tar.gz

     c)安装完毕为他建立一个链接以节省目录长度

          ln -s /usr/java/jdk1.8.0_60/ /usr/jdk.8

     d).编辑配置文件,配置环境变量

            cat /etc/profile,会发现如下一段描述。

            # It's NOT a good idea to change this file unless you know what you

            # are doing. It's much better to create a custom.sh shell script in

            # /etc/profile.d/ to make custom changes to your environment, as this

            # will prevent the need for merging in future updates.

           也就是profile其实会去读取/etc/profile.d目录下的所有配置文件,这样也便于配置文件的维护。因此直接在/etc/profile.d目录下创建一个jdk1.8.sh配置文件

            添加如下内容:

            JAVA_HOME=/usr/jdk1.8

            CLASSPATH=$JAVA_HOME/lib/

            HADOOP_HAOME

            PATH=$PATH:$JAVA_HOME/bin:$

            export PATH JAVA_HOME CLASSPATH

      e)执行source profile

      f) 测试java安装是否成功 java -version。如果操作系统本身安装的jdk,需要卸载掉原先已经存在的jdk

   4配置Hadoop集群

       参照:http://blog.csdn.net/xiaoxiangzi222/article/details/52757168

       官方文档:http://hadoop.apache.org/docs/r1.0.4/cn/cluster_setup.html

                        http://hadoop.apache.org/docs/r2.7.3/hadoop-project-dist/hadoop-common/ClusterSetup.html

                        其中1.04虽然版本很久,但是中文版的。有些翻译会比较准确有一定的参考价值。可以对照最新的参考文档进行一步步配置。