一、hadoop2.x版本的集群安装

个人安装的是centos6.5,hadoop2.9.0。

准备两台虚拟机,一台作为主节点master,一台作为从节点slave1。

1、关闭防火墙,禁用selinux

# service iptables status        # 查看防火墙状态

# service iptables stope        # 若开启,则关闭

# vim /etc/sysconfig/selinux    # 修改SELINUX=disabled

2、网络配置

    1)确保VMnet8网卡已开启 

        首先确保虚拟网卡(VMware Network Adapter VMnet8)是开启的,然后在windows的命令行里输入“ipconfig /all”,找到VMware Network Adapter VMnet8的ipv4地址(例如:192.168.10.1),如下图:

一、hadoop2.x版本的集群安装_第1张图片

  2)查看网关:

       打开vmware,编辑——虚拟网络

一、hadoop2.x版本的集群安装_第2张图片

一、hadoop2.x版本的集群安装_第3张图片

一、hadoop2.x版本的集群安装_第4张图片

    3)查看网卡名称:

        vim /etc/udev/rules.d/70-persistent-net.rules        

一、hadoop2.x版本的集群安装_第5张图片

我的网卡名称为eth1。

    4)设置网络

        vim /etc/sysconfig/network-scripts/ifcfg-eth0

一、hadoop2.x版本的集群安装_第6张图片

    5)生效设置,重启网卡,service network restart或者/etc/init.d/network restart 

3、创建用户hadoop 并设置密码

    # useradd -m hadoop -s /bin/bash    #创建新用户hadoop

    # passwd hadoop

    # visudo         #为用户增加管理员权限【:91】(91行左右)

    一、hadoop2.x版本的集群安装_第7张图片

4、修改主机名称

    # vim /etc/sysconfig/network    

一、hadoop2.x版本的集群安装_第8张图片

    重启生效,# reboot

5、ip和hostname绑定

一、hadoop2.x版本的集群安装_第9张图片

这里我只配置了一个从节点。

$ ping 主机名    # 验证是否相通

从节点的网络环境同理配置好。

6、ssh免密登录从节点(所有守护进程通过ssh协议通信)

    1)$ ssh localhost      # 执行该命令,会在~/生成.ssh目录(如果没有的情况下)

          $ cd ~/.ssh

          $ rm ./id_rsa*        # 如果有,删除之前的公钥       

          $ ssh-keygen -t rsa    # 一直回车

          $ cat ./id_rsa.pub >> ./authorized_keys    # 加入授权

          $ chmod 600 ./authorized_keys        # 修改文件权限

          $ ssh localhost        # 测试,可无密码登录了

          $ exit                        # 退出刚刚登录的客户端

          $ scp ~/.ssh/id_rsa.pub hadoop@slave1:/home/hadoop    # 传输master的公钥到各个从节点

       2)从节点slave1上,将ssh公钥加入授权

            $ mkdir ~/.ssh # 如果不存在文件夹需先创建,若已存在则忽略

            $ cat ~/id_rsa.pub >> ~/.ssh/authorized_keys

            $ rm ~/id_rsa.pub # 用完就可以删了

   3)在主节点上执行,$ ssh slave1

    $ exit    # 退出登录

7、安装jdk

    1)卸载自带openjdk

        # rpm -qa | grep java  # 查询操作系统自身安装的java

        # rpm -e --nodeps 文件名    # 若有,即分别卸载它们

    2)下载解压jdk

        $ sudo yum install java-1.7.0-openjdk java-1.7.0-openjdk-devel    # 安装过程中输入y

    默认安装路径/usr/lib/jvm/java-1.7.0-openjdk,可通过$ rpm -ql java-1.7.0-openjdk-devel | grep '/bin/javac' 查看(出去路径末尾的‘/bin/javac’)

    3)配置jdk环境变量,我配置的是当前用户有效的,在~/.bashrc中, 添加 export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.171-2.6.13.0.el7_4.x86_64,即

        $ vim ~/.bashrc

    添加 export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.171-2.6.13.0.el7_4.x86_64 并保存生效,

        $ source ~/.bashrc

    4)检验jdk配置    

        $ echo $JAVA_HOME # 检验变量值

        $ java -version

        $ $JAVA_HOME/bin/java -version  # 与直接执行java -version一样,配置正确

8、hadoop-2.9.0安装

 1)下载hadoop-2.9.0.tar.gz上传到~/Downloads/

 $ sudo tar -zxf ~/Downloads/hadoop-2.9.0.tar.gz -C /usr/local # 解压到/uar/local中

 $ cd /usr/local/

 2)使用hadoop用户在hadoop-2.9.0目录下创建tmp、name和data目录,保证目录所有者为hadoop
 $ mkdir tmp
 $ mkdir name
 $ mkdir data

 $ sudo chown -R hadoop:hadoop ./hadoop-2.9.0 # 修改文件权限,确保目录所有者为hadoop

 一、hadoop2.x版本的集群安装_第10张图片

9、配置环境变量/etc/profile并设置生效

  # vim /etc/profile

 添加如下路径:

    export HADOOP_HOME=/usr/local/hadoop-2.9.0

    export PATH=.:$HADOOP_HOME/bin:$PATH

    一、hadoop2.x版本的集群安装_第11张图片

保存生效,# source /etc/profile

10、进入hadoop安装目录下etc/hadoop下,修改配置文件

  $ cd etc/hadoop

  1)$ vim hadoop-env.sh,在最后添加

    一、hadoop2.x版本的集群安装_第12张图片

  编译确认生效,

  $ source hadoop-env.sh

  $ hadoop version    # 显示版本信息

 2) $ vim yarn-env.sh,添加JAVA_HOME

    一、hadoop2.x版本的集群安装_第13张图片

  编译确认生效,

   $ source yarn-env.sh

3)$ vim core-site.xml,添加配置


       
                fs.default.name
                hdfs://master:9000
       

       
                fs.defaultFS
                hdfs://master:9000
       

       
                io.file.buffer.size
                131072
       

       
                hadoop.tmp.dir
                file:/usr/local/hadoop-2.9.0/tmp
                Abase for other temporary directories.
       

一、hadoop2.x版本的集群安装_第14张图片

4)$ vim hdfs-site.xml,dfs.replication一般设为3(副本数),这里我只配一个节点,设为1;

 


         
                  dfs.namenode.secondary.http-address
                 master:9001
         

         
                 dfs.namenode.name.dir
                file:/usr/local/hadoop-2.9.0/name
       

       
                dfs.datanode.data.dir
                file:/usr/local/hadoop-2.9.0/data
       

       
                dfs.replication
                1
       

       
                dfs.webhdfs.enabled
                true
       

 

一、hadoop2.x版本的集群安装_第15张图片

5)$ vim mapred-site.xml(默认文件名为mapred-site.xml.template,可先重命名);


       
                mapreduce.framework.name
                 yarn
       

       
                mapreduce.jobhistory.address
                master:10020
       

       
                mapreduce.jobhistory.webapp.address
                master:19888
       

一、hadoop2.x版本的集群安装_第16张图片

6)$ vim yarn-site.xml,


       
                yarn.nodemanager.aux-services
                mapreduce_shuffle
       

       
                org.apache.hadoop.mapred.ShuffleHandler
         

       
       
                yarn.nodemanager.aux-services
                mapreduce_shuffle
       

       
                yarn.nodemanager.aux-services.mapreduce.shuffle.class
                org.apache.hadoop.mapred.ShuffleHandler
         

       
                yarn.resourcemanager.address
                master:8032
       

       
                yarn.resourcemanager.scheduler.address
                master:8030
       

       
                yarn.resourcemanager.resource-tracker.address
                master:8031
       

       
                yarn.resourcemanager.admin.address
                master:8033
       

       
                yarn.resourcemanager.webapp.address
                master:8088
       

一、hadoop2.x版本的集群安装_第17张图片

7)$ vim slaves    # 配置从节点

一、hadoop2.x版本的集群安装_第18张图片

11、向各节点分发hadoop程序

  1)在从节点创建/usr/local/hadoop-2.9.0并执行$ chown -R hadoop hadoop-2.9.0    

  2)在主节点hadoop目录,/usr/local/hadoop-2.9.0下,执行:

   $ scp -r * hadoop@slave1:/usr/local/hadoop-2.9.0

  3)在从节点hadoop目录下查看是否复制成功, $ ls

  4)在主节点hadoop目录下,格式化namenode:

   $ ./bin/hdfs namenode -format

  5)启动hdfs:
$ cd sbin

$ ./start-dfs.sh   # 这里我启动报错了,在后面贴出来

   验证当前进行jps:
master上运行的进程有namenode,secondarynamenode
slave1上运行进程有datanode
  6)启动yarn:
./start-yarn.sh
   验证当前进行:
master上有:namenode,secondarynamenode,resourcemanager

slave1上有datanode,nodemanager

12、报错Error:cannot find configuration directory:/etc/hadoop

    我在第11步中第5)步启动hdfs报错了: 

一、hadoop2.x版本的集群安装_第19张图片

 

  解决:

    修改hadoop-env.sh中的 HADOOP_CONF_DIR路径,

        export HADOOP_CONF_DIR=${HADOOP_CONF_DIR:-"/etc/hadoop"}

    改为绝对路径

        export HADOOP_CONF_DIR=/usr/local/hadoop-2.9.0/etc/hadoop

    一、hadoop2.x版本的集群安装_第20张图片

 

    保存退出,记得$ source hadoop-env.sh,确认生效。

    拷贝到从节点,$ scp hadoop-env.sh hadoop@slave1:/usr/local/hadoop-2.9.0/etc/hadoop。

    主节点重新执行11步中4)之后的步骤,启动成功。

13、浏览器访问

http://master:50070

一、hadoop2.x版本的集群安装_第21张图片

一、hadoop2.x版本的集群安装_第22张图片

http://master:8088

一、hadoop2.x版本的集群安装_第23张图片

    

注:

 

可以将hadoop命令的相关目录加入到PATH环境变量中,这样就可以直接通过start-dfs.sh开启hadoop,也可以直接通过hdfs访问hdfs的内容方便平时的操作。

选择在~/.bashrc中进行设置,在文件中加入

export PATH=$PATH:/usr/local/hadoop-2.9.0/sbin:/usr/local/hadoop-2.9.0/bin

保存执行:source ~/.bashrc,使设置生效,生效后在任意目录中,都可以直接使用hdfs等命令。

 

 

 

 

 

   

  

 

    

 

 

 

 

 

            

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(hadoop学习过程)