Hadoop 集群搭建

来源:互联网 发布:阿里云服务器网站备案 编辑:程序博客网 时间:2024/06/13 22:41


一.修改主机名 
    vi /etc/sysconfig/network ,改为 master , slave1 , slave2
 使用指令:source /etc/sysconfig/network 让刚才的设置生效。如果不行需要 reboot

二.在master主机的终端输入命令: vi /etc/hosts
    192.168.105.105 master
    192.168.105.106 slave1
    192.168.105.107 slave2
    将修改后的host文件发送到其他主机,进行远程拷贝
    scp/etc/hosts root@192.168.105.106:/etc/
    scp/etc/hosts root@192.168.105.107:/etc/
三.安装ssh (配置ssh 无密码访问)
    原理:在每台主机上生成公钥和私钥,将公钥拷贝到其他主机上保存,相当于在其他主机上开一个门,私钥就是这个门上的钥匙。
    通过这个门和钥匙来进行匹配,实现无密码访问。
    在每个主机上使用ssh登录到其他各个主机:
    如在master上执行指令 ssh 192.168.105.106
    登录完成后,输入exit进行退出,返回在master节点
    每台机器首先在终端中输入命令: cd ~/.ssh
    每台机器然后再终端中输入命令生成公钥和私钥文件: ssh-keygen -t rsa -P ''

    每台机器然后在终端中输入命令将公钥文件拷贝到 authorized_keys 文件中: cp id_rsa.pub authorized_keys
    在所有slaves节点上都执行命令,将每个slave中的authorized_keys 内容追加到master中的相应的文件
    内容后: cat ~/.ssh/authorized_keys | ssh root@192.168.80.130 'cat >> ~/.ssh/authorized_keys'

    使用远程复制,将master中的 authorized_keys 拷贝到对应的 slave1 和 slave2:
    scp ~/.ssh/authorized_keys root@192.168.105.106:~/.ssh/
    scp ~/.ssh/authorized_keys root@192.168.105.107:~/.ssh/

使用ssh命令,互相进行登录,出现提示的时候输入yes,以后每次登录就不需要再去输入密码对于
    master: ssh master –> ssh slave1 –> ssh master –> ssh slave2 –> ssh master
    slave1: ssh slave1 –> ssh slave2 –> ssh slave1
    slave2: ssh slave2
   
    四.安装jdk
    查看之前是否安装java rpm -qa | grep jdk
    输入 rpm -e --nodeps 要卸载的软件 卸载之前安装的jdk
    下载运行jdk插件 yum install glibc.i686
    将jdk拷贝进linux 中,并进入对应的文件夹中
    将jdk解压到 /opt/SoftWare/java 下 tar -xvf jdk-8u141-linux-x64.tar.gz -C /opt/SoftWare/java/
    配置jdk环境变量,打开/etc/profile vi /etc/profile配置文件,将下面配置拷贝进去

    #set java environment
    export JAVA_HOME=/opt/SoftWare/Java/jdk1.8.0_141
    export JRE_HOME=/opt/SoftWare/Java/jdk1.8.0_141/jre
    export CLASSPATH=.:$JRE_HOME/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

    重新加载/etc/profile配置文件 source /etc/profile
    java -version 或者 javac 或者 java 是否都识别,识别就证明安装成功

    五.安装Hadoop
    将拷贝到linux系统中的 2.7.3的Hadoop解压到 /opt/SoftWare/Hadoop 目录下:
        tar zxvf hadoop-2.7.3.tar.gz -C /opt/SoftWare/Hadoop/


    配置hadoop环境变量,打开/etc/profile vi /etc/profile配置文件,将下面配置拷贝进去
    export HADOOP_HOME=/opt/SoftWare/Hadoop/hadoop-2.7.3
    export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

    

    配置hadoop /opt/SoftWare/Hadoop/hadoop-2.7.3/etc/hadoop/文件夹下的

    hadoop-env.sh    yarn-env.sh    core-site.xml    hdfs-site.xml    mapred-site.xml    yarn-site.xml    slaves 七个文件
         hadoop-env.sh 中    JAVA_HOME=/opt/SoftWare/Java/jdk1.8.0_141
         yarn-env.sh 中     JAVA_HOME=/opt/SoftWare/Java/jdk1.8.0_141
         slaves 中 :
            slave1
            slave2
    core-site.xml : 
        <configuration>
            <property>
                <name>fs.defaultFS</name>
                <!--定义HadoopMaster的URI和端口-->
                <value>hdfs://master:9000</value>
            </property>
            <property>
                <name>hadoop.tmp.dir</name>
                <!--hadoop中其他目录的临时存储目录-->
                <value>file:/opt/SoftWare/Hadoop/hadoop-2.7.3/tmp</value>
            </property>
            <property>
                <name>io.file.buffer.size</name>
                <!--用作序列化文件处理时读写buffer的大小-->
                <value>131702</value>
            </property>
        <property>
                <name>hadoop.proxyuser.root.hosts</name>
                <value>*</value>
        </property>
        <property>
                <name>hadoop.proxyuser.root.groups</name>
                <value>*</value>
        </property>

    </configuration>
    hdfs-site.xml :
    <configuration>
        <property>
            <name>dfs.namenode.name.dir</name>
            <!--namenode节点数据存储目录-->
            <value>file:/opt/SoftWare/Hadoop/hadoop-2.7.3/hdfs/name</value>
        </property>
        <property>
            <name>dfs.datanode.data.dir</name>
            <!--datanode数据存储目录-->
            <value>file:/opt/SoftWare/Hadoop/hadoop-2.7.3/hdfs/data</value>
        </property>
        <property>
            <!--指定DataNode存储block的副本数量,不大于DataNode的个数就行-->
            <name>dfs.replication</name>
            <value>2</value>
        </property>
        <property>
            <!--指定master的http地址-->
            <name>dfs.namenode.secondary.http-address</name>
            <value>master:50090</value>
        </property>
        <property>
            <!--指定master的https地址-->
            <name>dfs.namenode.secondary.https-address</name>
            <value>master:50091</value>
        </property>
        <property>
            <!--必须设置为true,否则就不能通过web访问hdfs上的文件信息-->
            <name>dfs.webhdfs.enabled</name>
            <value>true</value>
        </property>

    </configuration>

    mapred-site.xml :
    <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>
            <!--NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MapReduce程序-->
            <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</value>
        </property>
        <property>
            <name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
            <value>org.apache.hadoop.mapred.ShuffleHandler</value>
        </property>
        <property>
            <!--ResourceManager 对客户端暴露的地址。客户端通过该地址向RM提交应用程序,杀死应用程序等。-->
            <name>yarn.resourcemanager.address</name>
            <value>master:8032</value>
        </property>
        <property>
            <!--ResourceManager 对ApplicationMaster暴露的访问地址。ApplicationMaster通过该地址向RM申请资源、释放资源等。-->
            <name>yarn.resourcemanager.scheduler.address</name>
            <value>master:8030</value>
        </property>
        <property>
            <!--ResourceManager 对NodeManager暴露的地址.。NodeManager通过该地址向RM汇报心跳,领取任务等。-->
            <name>yarn.resourcemanager.resource-tracker.address</name>
            <value>master:8031</value>
        </property>
        <property>
            <!--ResourceManager 对管理员暴露的访问地址。管理员通过该地址向RM发送管理命令等。-->
            <name>yarn.resourcemanager.admin.address</name>
            <value>master:8033</value>
        </property>
        <property>
            <!--用户可通过该地址在浏览器中查看集群各类信息。-->
            <name>yarn.resourcemanager.webapp.address</name>
            <value>master:8088</value>
        </property>
        <property>
            <!--NodeManager总的可用物理内存。注意,该参数是不可修改的,一旦设置,整个运行过程中不 可动态修改。另外,该参数的默认值是    8192MB,因此,这个值通过一 定要配置。不过,Apache已经正在尝试将该参数做成可动态修改的。-->
            <name>yarn.nodemanager.resource.memory-mb</name>
            <value>2048</value>
        </property>
    </configuration>

    六.
    远程将master上的 /opt/SoftWare 的内容拷贝到子节点, -r 表示递归
    scp -r /opt/SoftWare root@slave1:/opt/
    scp -r /opt/SoftWare root@slave2:/opt/
    远程将master上的 /etc/profile 的内容拷贝到子节点
    scp -r /etc/profile root@slave1:/etc/
    scp -r /etc/profile root@slave2:/etc/

    执行全部的source source /etc/profile
    
    七.同步系统时间
    安装ntpdate工具 yum ‐y install ntp ntpdate
    设置与网络时间同步 ntpdate cn.pool.ntp.org
    系统时间写入硬件时间 hwclock --systohc
    
    八.格式化
    在master主节点中,进入hadoop2.7.3,输入命令 bin/hdfs namenode -format 进行格式化
    
    表示格式化成功

    九.启动集群
    启动集群,输入 ./sbin/start-all.sh 因为已经配置过了环境变量所以可以直接输入 start-all.sh
    关闭集群 stop-all.sh

    主节点上jps进程有:
        NameNode
        SecondaryNameNode
        ResourceManager
    每个子节点上的jps进程有:
        DataNode
        NodeManager
    如果这样表示hadoop集群配置成功


一.修改主机名 
    vi /etc/sysconfig/network ,改为 master , slave1 , slave2
 使用指令:source /etc/sysconfig/network 让刚才的设置生效。如果不行需要 reboot

二.在master主机的终端输入命令: vi /etc/hosts
    192.168.105.105 master
    192.168.105.106 slave1
    192.168.105.107 slave2
    将修改后的host文件发送到其他主机,进行远程拷贝
    scp/etc/hosts root@192.168.105.106:/etc/
    scp/etc/hosts root@192.168.105.107:/etc/
三.安装ssh (配置ssh 无密码访问)
    原理:在每台主机上生成公钥和私钥,将公钥拷贝到其他主机上保存,相当于在其他主机上开一个门,私钥就是这个门上的钥匙。
    通过这个门和钥匙来进行匹配,实现无密码访问。
    在每个主机上使用ssh登录到其他各个主机:
    如在master上执行指令 ssh 192.168.105.106
    登录完成后,输入exit进行退出,返回在master节点
    每台机器首先在终端中输入命令: cd ~/.ssh
    每台机器然后再终端中输入命令生成公钥和私钥文件: ssh-keygen -t rsa -P ''

    每台机器然后在终端中输入命令将公钥文件拷贝到 authorized_keys 文件中: cp id_rsa.pub authorized_keys
    在所有slaves节点上都执行命令,将每个slave中的authorized_keys 内容追加到master中的相应的文件
    内容后: cat ~/.ssh/authorized_keys | ssh root@192.168.80.130 'cat >> ~/.ssh/authorized_keys'

    使用远程复制,将master中的 authorized_keys 拷贝到对应的 slave1 和 slave2:
    scp ~/.ssh/authorized_keys root@192.168.105.106:~/.ssh/
    scp ~/.ssh/authorized_keys root@192.168.105.107:~/.ssh/

使用ssh命令,互相进行登录,出现提示的时候输入yes,以后每次登录就不需要再去输入密码对于
    master: ssh master –> ssh slave1 –> ssh master –> ssh slave2 –> ssh master
    slave1: ssh slave1 –> ssh slave2 –> ssh slave1
    slave2: ssh slave2
   
    四.安装jdk
    查看之前是否安装java rpm -qa | grep jdk
    输入 rpm -e --nodeps 要卸载的软件 卸载之前安装的jdk
    下载运行jdk插件 yum install glibc.i686
    将jdk拷贝进linux 中,并进入对应的文件夹中
    将jdk解压到 /opt/SoftWare/java 下 tar -xvf jdk-8u141-linux-x64.tar.gz -C /opt/SoftWare/java/
    配置jdk环境变量,打开/etc/profile vi /etc/profile配置文件,将下面配置拷贝进去

    #set java environment
    export JAVA_HOME=/opt/SoftWare/Java/jdk1.8.0_141
    export JRE_HOME=/opt/SoftWare/Java/jdk1.8.0_141/jre
    export CLASSPATH=.:$JRE_HOME/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

    重新加载/etc/profile配置文件 source /etc/profile
    java -version 或者 javac 或者 java 是否都识别,识别就证明安装成功

    五.安装Hadoop
    将拷贝到linux系统中的 2.7.3的Hadoop解压到 /opt/SoftWare/Hadoop 目录下:
        tar zxvf hadoop-2.7.3.tar.gz -C /opt/SoftWare/Hadoop/


    配置hadoop环境变量,打开/etc/profile vi /etc/profile配置文件,将下面配置拷贝进去
    export HADOOP_HOME=/opt/SoftWare/Hadoop/hadoop-2.7.3
    export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

    

    配置hadoop /opt/SoftWare/Hadoop/hadoop-2.7.3/etc/hadoop/文件夹下的

    hadoop-env.sh    yarn-env.sh    core-site.xml    hdfs-site.xml    mapred-site.xml    yarn-site.xml    slaves 七个文件
         hadoop-env.sh 中    JAVA_HOME=/opt/SoftWare/Java/jdk1.8.0_141
         yarn-env.sh 中     JAVA_HOME=/opt/SoftWare/Java/jdk1.8.0_141
         slaves 中 :
            slave1
            slave2
    core-site.xml : 
        <configuration>
            <property>
                <name>fs.defaultFS</name>
                <!--定义HadoopMaster的URI和端口-->
                <value>hdfs://master:9000</value>
            </property>
            <property>
                <name>hadoop.tmp.dir</name>
                <!--hadoop中其他目录的临时存储目录-->
                <value>file:/opt/SoftWare/Hadoop/hadoop-2.7.3/tmp</value>
            </property>
            <property>
                <name>io.file.buffer.size</name>
                <!--用作序列化文件处理时读写buffer的大小-->
                <value>131702</value>
            </property>
    </configuration>
    hdfs-site.xml :
    <configuration>
        <property>
            <name>dfs.namenode.name.dir</name>
            <!--namenode节点数据存储目录-->
            <value>file:/opt/SoftWare/Hadoop/hadoop-2.7.3/hdfs/name</value>
        </property>
        <property>
            <name>dfs.datanode.data.dir</name>
            <!--datanode数据存储目录-->
            <value>file:/opt/SoftWare/Hadoop/hadoop-2.7.3/hdfs/data</value>
        </property>
        <property>
            <!--指定DataNode存储block的副本数量,不大于DataNode的个数就行-->
            <name>dfs.replication</name>
            <value>2</value>
        </property>
        <property>
            <!--指定master的http地址-->
            <name>dfs.namenode.secondary.http-address</name>
            <value>master:50090</value>
        </property>
        <property>
            <!--指定master的https地址-->
            <name>dfs.namenode.secondary.https-address</name>
            <value>master:50091</value>
        </property>
        <property>
            <!--必须设置为true,否则就不能通过web访问hdfs上的文件信息-->
            <name>dfs.webhdfs.enabled</name>
            <value>true</value>
        </property>

    </configuration>

    mapred-site.xml :
    <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>
            <!--NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MapReduce程序-->
            <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</value>
        </property>
        <property>
            <name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
            <value>org.apache.hadoop.mapred.ShuffleHandler</value>
        </property>
        <property>
            <!--ResourceManager 对客户端暴露的地址。客户端通过该地址向RM提交应用程序,杀死应用程序等。-->
            <name>yarn.resourcemanager.address</name>
            <value>master:8032</value>
        </property>
        <property>
            <!--ResourceManager 对ApplicationMaster暴露的访问地址。ApplicationMaster通过该地址向RM申请资源、释放资源等。-->
            <name>yarn.resourcemanager.scheduler.address</name>
            <value>master:8030</value>
        </property>
        <property>
            <!--ResourceManager 对NodeManager暴露的地址.。NodeManager通过该地址向RM汇报心跳,领取任务等。-->
            <name>yarn.resourcemanager.resourcetracker.address</name>
            <value>master:8031</value>
        </property>
        <property>
            <!--ResourceManager 对管理员暴露的访问地址。管理员通过该地址向RM发送管理命令等。-->
            <name>yarn.resourcemanager.admin.address</name>
            <value>master:8033</value>
        </property>
        <property>
            <!--用户可通过该地址在浏览器中查看集群各类信息。-->
            <name>yarn.resourcemanager.webapp.address</name>
            <value>master:8088</value>
        </property>
        <property>
            <!--NodeManager总的可用物理内存。注意,该参数是不可修改的,一旦设置,整个运行过程中不 可动态修改。另外,该参数的默认值是    8192MB,因此,这个值通过一 定要配置。不过,Apache已经正在尝试将该参数做成可动态修改的。-->
            <name>yarn.nodemanager.resource.memory-mb</name>
            <value>2048</value>
        </property>
    </configuration>

    六.
    远程将master上的 /opt/SoftWare 的内容拷贝到子节点, -r 表示递归
    scp -r /opt/SoftWare root@slave1:/opt/
    scp -r /opt/SoftWare root@slave2:/opt/
    远程将master上的 /etc/profile 的内容拷贝到子节点
    scp -r /etc/profile root@slave1:/etc/
    scp -r /etc/profile root@slave2:/etc/

    执行全部的source source /etc/profile
    
    七.同步系统时间
    安装ntpdate工具 yum ‐y install ntp ntpdate
    设置与网络时间同步 ntpdate cn.pool.ntp.org
    系统时间写入硬件时间 hwclock --systohc
    
    八.格式化
    在master主节点中,进入hadoop2.7.3,输入命令 bin/hdfs namenode -format 进行格式化
    
    表示格式化成功

    九.启动集群
    启动集群,输入 ./sbin/start-all.sh 因为已经配置过了环境变量所以可以直接输入 start-all.sh
    关闭集群 stop-all.sh

    主节点上jps进程有:
        NameNode
        SecondaryNameNode
        ResourceManager
    每个子节点上的jps进程有:
        DataNode
        NodeManager
    如果这样表示hadoop集群配置成功


原创粉丝点击