Hadoop分布式集群搭建

Hadoop分布式集群搭建

环境

Windows下的VMware虚拟机,用cnetos搭建三台hadoop分布式集群

下载包

1、创建hadoop用户

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

    passwd hadoop 给用户添加密码    

2、修改网络信息(静态ip)

  • 修改hosts文件,实验机器中etc/hosts之中的主机名如果与实际的主机名不一致,修改etc/hosts为当前主机名

    sudo vi /etc/sysconfig/network  #修改主机名
    
    sudo vi /etc/hosts  #修改ip
    
  • 修改完后保存退出并重启。
    reboot

3、安装SSH、配置SSH无密码登陆

  • 利用 ssh-keygen 生成密钥,并将密钥加入到授权中:
    ssh-keygen -t rsa # 会有提示,都按回车就可以

    cat id_rsa.pub >> authorized_keys  # 加入授权
    
    chmod 600 ./authorized_keys    # 修改文件权限
    
  • 接着在 Master 节点将上公匙传输到 Slave 节点:

    scp ~/.ssh/id_rsa.pub hadoop@Slave1:/home/hadoop/
    
    mkdir ~/.ssh       # 如果不存在该文件夹需先创建,若已存在则忽略
    
    cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
    
    chmod 600 authorized_keys
    
    rm ~/id_rsa.pub    # 用完就可以删掉了
    

4、CentOS系统需要关闭防火墙

    sudo service iptables stop   # 关闭防火墙服务

    sudo chkconfig iptables off  # 禁止防火墙开机自启,就不用手动关闭了

5、安装Java环境

sudo tar -zxvf ~/downloads/jdk-7u91-linux-x64.tar.gz -C /usr/local  #解压到/usr/local目录下
  • 配置一下 JAVA_HOME 环境变量:
    vi ~/.bashrc

  • 追加以下并保存:

    export JAVA_HOME=/usr/local/jdk1.7.0_91
    
    export PATH=$JAVA_HOME/bin:$PATH:
    

    * source ~/.bashrc # 使变量设置生效 *

  • 设置好后我们来检验一下是否设置正确:

    java -version
    

6、现在主节点上安装hadoop2

    sudo tar -zxvf ~/downloads/hadoop-2.6.1.tar.gz -C /usr/local   # 解压到/usr/local中

    sudo mv hadoop-2.6.1 hadoop            # 将文件夹名改为hadoop

    sudo chown -R hadoop:hadoop hadoop        # 修改文件权限
  • 在搭建 Hadoop 之前,我们还需要设置 HADOOP 环境变量:

    vi ~/.bashrc
    
  • 在文件最后面增加如下内容:
    # Hadoop Environment Variables

    export HADOOP_HOME=/usr/local/hadoop
    
    export HADOOP_INSTALL=$HADOOP_HOME
    
    export HADOOP_MAPRED_HOME=$HADOOP_HOME
    
    export HADOOP_COMMON_HOME=$HADOOP_HOME
    
    export HADOOP_HDFS_HOME=$HADOOP_HOME
    
    export YARN_HOME=$HADOOP_HOME
    
    export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
    
    export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
    
    export PATH=$PATH:/usr/local/hadoop/sbin:/usr/local/hadoop/bin
    

* source ~/.bashrc #使命令生效 *

7、修改配置hadoop配置文件信息

修改配置文件 core-site.xml (vi ./etc/hadoop/core-site.xml)

<configuration>
        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://Master:9000</value>
        </property>
        <property>
                <name>hadoop.tmp.dir</name>
                <value>file:/usr/local/hadoop/tmp</value>
                <description>Abase for other temporary directories.</description>
        </property>
</configuration>

文件 hdfs-site.xml,dfs.replication 一般设为 3

<configuration>
        <property>
                <name>dfs.namenode.secondary.http-address</name>
                <value>Master:50090</value>
        </property>
        <property>
                <name>dfs.replication</name>
                <value>2</value>
        </property>
        <property>
                <name>dfs.namenode.name.dir</name>
                <value>file:/usr/local/hadoop/tmp/dfs/name</value>
        </property>
        <property>
                <name>dfs.datanode.data.dir</name>
                <value>file:/usr/local/hadoop/tmp/dfs/data</value>
        </property>
</configuration>

文件 mapred-site.xml (可能需要先重命名,默认文件名为 mapred-site.xml.template),然后配置修改如下:

<configuration>
        <property>
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
        </property>
        <property>
                <name>mapreduce.jobhistory.address</name>
                <value>Master:10020</value>
        </property>
        <property>
                <name>mapreduce.jobhistory.webapp.address</name>
                <value>Master:19888</value>
        </property>
</configuration>

文件 yarn-site.xml:

<configuration>
        <property>
                <name>yarn.resourcemanager.hostname</name>
                <value>Master</value>
        </property>
        <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
        </property>
</configuration>

8、配置完成后。配置好后,将 Master 上的 /usr/local/Hadoop 文件夹复制到各个节点上。在 Master 节点上执行:

要是之前Master跑了伪分布式就要删除不必要的信息

    sudo rm -r ./hadoop/tmp     # 删除 Hadoop 临时文件

    sudo rm -r ./hadoop/logs/*   # 删除日志文件

打包发送

    tar -zcf ~/hadoop.master.tar.gz ./hadoop   # 先压缩再复制

    scp ./hadoop.master.tar.gz Slave1:/home/hadoop

在 Slave1 节点上执行:

    sudo rm -r /usr/local/hadoop    # 删掉旧的(如果存在)

    sudo tar -zxf ~/hadoop.master.tar.gz -C /usr/local

    sudo chown -R hadoop /usr/local/hadoop

首次启动需要先在 Master 节点执行 NameNode 的格式化:

    hdfs namenode -format       # 首次运行需要执行初始化,之后不需要

启动hadoop集群:

    /usr/local/hadoop/sbin/start-all.sh

验证hadoop集群jps

主节点
Jps
2986 SecondaryNameNode
3143 ResourceManager
2791 NameNode
3212 Jps
子节点
jps
1950 Jps
1831 NodeManager
1725 DataNode

遇到的问题及解决方案

没有namenode进程

  • 检查ifconfig和/etc/hosts中的ip是否一致

没有datenode进程

  • 删除hadoop/tmp下所有文件,格式化dfs后,再此启动Hadoop,这种方法会丢失数据,不建议使用。

出现这种问题是由于 * /usr/local/hadoop/tmp/dfs/data/current/VERSION中的clusterID和/usr/local
/hadoop/tmp/dfs/name/current/VERSION * 中的clusterID不一致导致的,将data中的和name的保持一致即可。

猜你喜欢

转载自blog.csdn.net/Jin__nan/article/details/80032807