hadoop 安装(非CDH)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zimiao552147572/article/details/88602345

大数据组件安装(非CDH)和使用 总文章

1.安装hadoop 之前的准备工作
    1.yum install -y vim 建议安装 vim 编辑器
    2.配置好各虚拟机的网络(采用NAT联网模式)
        1.第一种:通过Linux图形界面进行修改(桌面版本Centos)
            进入Linux图形界面 -> 右键点击右上方的两个小电脑 -> 点击Edit connections -> 选中当前网络System eth0 -> 点击edit按钮 -> 选择IPv4 ->
             method选择为manual -> 点击add按钮 -> 添加IP:192.168.1.101 子网掩码:255.255.255.0 网关:192.168.1.1 -> apply

        2.第二种:修改配置文件方式
            vi /etc/sysconfig/network-scripts/ifcfg-eth0
            DEVICE="eth0"
            BOOTPROTO="static"               ### IP地址为静态
            HWADDR="00:0C:29:3C:BF:E7"
            IPV6INIT="yes"
            NM_CONTROLLED="yes"
            ONBOOT="yes"
            TYPE="Ethernet"
            UUID="ce22eeca-ecde-4536-8cc2-ef0dc36d4a8c"
            IPADDR="192.168.1.101"           ### 具体的静态固定IP
            NETMASK="255.255.255.0"          ### 子网掩码
            GATEWAY="192.168.1.1"            ### 网关IP

    3.修改各个虚拟机主机名
        1.vi /etc/sysconfig/network
        2.network文件中配置:
            NETWORKING=yes
            HOSTNAME=主机名

    4.修改hosts中的主机名和IP的映射关系
        1.vi /etc/hosts
        2.hosts文件中配置:    
            192.168.1.100    NODE1
            192.168.1.101    NODE2
            192.168.1.102    NODE3

    5.每台机器之间都需要配置ssh免密登陆:即每台机器之间都不需要密码而是使用私钥进行登录 
        1.生成ssh免登陆密钥:ssh-keygen -t rsa (四个回车)
          执行完这个命令后,会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)
        2.将公钥拷贝到要免密登陆的目标机器上(每一台机器,包括自己):ssh-copy-id IP地址/主机名
        3.第一台Linux 自己配置连接自己 免密登录:ssh-copy-id 192.168.25.100 或 ssh-copy-id node1
        4.第二台Linux 自己配置连接自己 免密登录:ssh-copy-id 192.168.25.101 或 ssh-copy-id node2

    6.同步每个机器的时间(集群需要)
        1.常用的手动进行时间的同步(一般不使用):date -s "2017-03-03 03:03:03"
        2.网络同步:
            yum install ntpdate
            ntpdate cn.pool.ntp.org
            ntpdate ntp6.aliyun.com
        3.查看linux当前时间的命令:date
    7.关闭防火墙 和 selinux 
        1.查看防火墙状态:service iptables status
        2.关闭防火墙:service iptables stop
        3.查看防火墙开机启动状态:chkconfig iptables --list
        4.永久关闭防火墙:chkconfig iptables off
        5.关闭 selinux 
            1.vi /etc/sysconfig/selinux
            2.把下面#后面的那一行注释掉, 改成下面那一行
                #SELINUX=enforcing
                SELINUX=disabled
        6.查看slinux状态:sestatus。为disabled 则表示关闭成功

    8.安装JDK
        1.上传jdk:rz jdk-8u65-linux-x64.tar.gz
        2.解压jdk:tar -zxvf jdk-8u65-linux-x64.tar.gz -C /root/apps
        3.将java添加到环境变量中(用vim有特殊单词颜色标记可以减少出错率):vim /etc/profile
          在profile文件最后添加:
                export JAVA_HOME=/export/server/jdk1.8.0_65
                export PATH=$PATH:$JAVA_HOME/bin
                export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
        4.刷新配置:source /etc/profile


2.安装hadoop
    1.tar zxvf hadoop-2.7.4-with-centos-6.7.tar.gz -C /root/
      解压到指定的目录/root/hadoop, 安装目录可以自定义
        Linux:hadoop-2.7.4-with-centos-6.7.tar.gz
        Window:hadoop-2.7.4-with-windows.tar.gz

    2.hadoop-env.sh 
        1.cd /root/hadoop/etc/hadoop
        2.vim hadoop-env.sh
        3.hadoop-env.sh 修改如下,保证能够引用到javahome:export JAVA_HOME=/root/java/jdk1.8.0_45

    3.core-site.xml
        1.cd /root/hadoop/etc/hadoop
        2.core-site.xml 修改如下:
            <!-- 指定HADOOP所使用的文件系统schema(URI),HDFS的主节点(NameNode)的IP地址192.168.25.100 或 主机名node1-->
            <property>
                <name>fs.defaultFS</name>
                <value>hdfs://NODE1:9000</value>
            </property>
            <!-- 指定hadoop运行时产生文件的存储目录,默认/tmp/hadoop-${user.name} 这个目录非常重要,且不用自己创建,初始化的时候会自动创建 -->
            <property>
                <name>hadoop.tmp.dir</name>
                <value>/root/hadoopData</value>
            </property>
            <!--  开启hdfs的垃圾桶机制,删除掉的数据可以从垃圾桶中回收,单位分钟 -->
            <property>
                <name>fs.trash.interval</name>
                <value>10080</value>
            </property>


    4.hdfs-site.xml 
        1.cd /root/hadoop/etc/hadoop
        2.hdfs-site.xml 修改如下:
            <!-- 指定HDFS副本的数量 默认的为3 -->
            <property> 
                <name>dfs.replication</name> 
                <value>2</value> 
            </property> 

扫描二维码关注公众号,回复: 5692726 查看本文章

            <!-- SecondaryNameNode(第二的NameNode)所在的第二台linux的IP地址192.168.25.101或主机名node2 和 端口--> 
            <property> 
                <name>dfs.namenode.secondary.http-address</name> 
                <value>node2:50090</value> 
            </property> 


    5.mapred-site.xml     
        1.cd /root/hadoop/etc/hadoop
        2.mv mapred-site.xml.template mapred-site.xml
        3.mapred-site.xml 修改如下:
            <!-- 指定 MapReduce 运行时框架,这里指定在 yarn 上,默认是 local本地模式集群,所以此处需要修改为 yarn集群 --> 
            <property>
                <name>mapreduce.framework.name</name> 
                <value>yarn</value> 
            </property>


    6.yarn-site.xml 
        1.cd /root/hadoop/etc/hadoop
        2.yarn-site.xml 修改如下:
            <!-- 指定 YARN 的主节点(ResourceManager)所在的第一台Linux的IP地址192.168.25.100 或 主机名node1 --> 
            <property> 
                <name>yarn.resourcemanager.hostname</name> 
                <value>node1</value> 
            </property> 

            <!-- NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MapReduce程序默认值:"" --> 
            <property> 
                <name>yarn.nodemanager.aux-services</name> 
                <value>mapreduce_shuffle</value> 
            </property> 
    

    7.修改 $HADOOP_HOME/etc/hadoop目录下的 slaves文件:slaves 文件里面记录的是集群主机名
        1.cd /root/hadoop/etc/hadoop
        2.vim slaves 
            删除 slaves文件中的信息localhost,添加集群中的所有主机名如下:
                node1
                node2
                node3

    8.配置Hadoop相关的 环境变量 
        1.编辑环境变量的profile配置文件: vi /etc/profile 
        2.profile配置文件末尾添加如下配置信息:
            export JAVA_HOME=/root/apps/jdk1.8.0_65(jdk目录的绝对路径) 
            export HADOOP_HOME=/root/hadoop(hadoop目录的绝对路径) 
            export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin 
        3.保存配置文件,重新加载配置文件:source /etc/profile

    9.把 /root目录下的 hadoop文件夹  推送给第二台、第三台linux:
        scp -r /root/hadoop root@node2:/root
        scp -r /root/hadoop root@node3:/root

      把 /etc目录下的 profile文件 推送给第二台、第三台linux的/etc目录下:
        scp -r /etc/profile root@node2:/etc    重新加载配置文件:source /etc/profile
        scp -r /etc/profile root@node3:/etc    重新加载配置文件:source /etc/profile

3.Hadoop 集群启动、初体验 
    1.格式化namenode
        本质是对namenode进行初始化,两个命令都可,一定要在namenode机器上格式化,格式化的时候就会创建 hadoop临时目录。
        即格式化后会在根据core-site.xml中的 hadoop.tmp.dir 所配置 /root/hadoopData 生成目录。
          同 core-site.xml 的 hadoop.tmp.dir,如果需要再次格式化,需要把每台服务器的 hadoop.tmp.dir 指定的数据文件夹删除。
              格式一:hdfs namenode -format
              格式二:hadoop namenode -format
 
    2.单节点逐个启动 
        1.在主节点上使用以下命令启动 HDFS NameNode:hadoop-daemon.sh start namenode 
        2.在每个从节点上使用以下命令启动 HDFS DataNode:hadoop-daemon.sh start datanode 
        3.在主节点上使用以下命令启动 YARN ResourceManager:yarn-daemon.sh start resourcemanager 
        4.在每个从节点上使用以下命令启动 YARN nodemanager:yarn-daemon.sh start nodemanager 
        5.以上脚本位于$HADOOP_PREFIX/sbin/目录下。 如果想要停止某个节点上某个角色,只需要把命令中的 start 改为 stop 即可。

    3.脚本一键启动(推荐) 
        如果配置了 etc/hadoop/slaves 和 ssh 免密登录,则可以使用程序脚本启动所有 Hadoop 两个集群的相关进程,在主节点所设定的机器上执行。 
            1.启动 hdfs 集群:
                cd /root/hadoop/sbin    
                ./start-dfs.sh 


            2.启动yarn集群:
                cd /root/hadoop/sbin 
                ./start-yarn.sh 


            3.停止 hdfs 集群:
                cd /root/hadoop/sbin 
                ./stop-dfs.sh
            4.停止 yarn 集群:
                cd /root/hadoop/sbin 
                ./stop-yarn.sh

    4.验证是否启动成功,使用jps命令验证


    5.集群 web-ui 
        一旦 Hadoop 集群启动并运行,可以通过 web-ui 进行集群查看,如下所述:  
            NameNode(HDFS管理界面):192.168.25.100:50070 或 node1:50070 
            ResourceManager(MR管理界面):http://192.168.25.100:8088 或 node1:8088 
    
    6.可在C:\Windows\System32\drivers\etc 配置如下信息:
        192.168.25.100 node1
        192.168.25.101 node2
        192.168.25.102 node3

    7.运行 mapreduce 程序 
        在 Hadoop 安装包的 /root/hadoop/share/hadoop/mapreduce 下有官方自带的 mapreduce 程序。我们可以使用如下的命令进行运行测试。 
        示例程序 jar:hadoop-mapreduce-examples-2.7.4.jar 
        计算圆周率:
            cd /root/hadoop/share/hadoop/mapreduce
            hadoop jar hadoop-mapreduce-examples-2.7.4.jar pi 20 50 
        关于圆周率的估算,感兴趣的可以查询资料 Monte Carlo 方法来计算 Pi 值。
         

4.配置被删除的文件后进入回收站的机制,修改 core-site.xml配置文件:
        1.cd /root/hadoop/etc/hadoop
        2.core-site.xml 修改如下:
            <!-- 指定HADOOP所使用的文件系统schema(URI),HDFS的主节点(NameNode)的IP地址192.168.25.100 或 主机名node1-->
            <property>
                <name>fs.defaultFS</name>
                <value>hdfs://NODE1:9000</value>
            </property>
            <!-- 指定hadoop运行时产生文件的存储目录,默认/tmp/hadoop-${user.name} 这个目录非常重要,且不用自己创建,初始化的时候会自动创建 -->
            <property>
                <name>hadoop.tmp.dir</name>
                <value>/root/hadoopData</value>
            </property>
            <!--  开启hdfs的垃圾桶机制,删除掉的数据可以从垃圾桶中回收,单位分钟 -->
            <property>
                <name>fs.trash.interval</name>
                <value>10080</value>
            </property>                                                            
                                                            
                        


     
                                              
5.安全模式:
    安全模式是HDFS所处的一种特殊状态,在这种状态下,文件系统只接受读数据请求,而不接受删除、修改等变更请求。
    在NameNode主节点启动时,HDFS首先进入安全模式,DataNode在启动的时候会向namenode汇报可用的block等状态,当整个系统达到安全标准时,HDFS自动离开安全模式。
    如果HDFS出于安全模式下,则文件block不能进行任何的副本复制操作,因此达到最小的副本数量要求是基于datanode启动时的状态来判定的,
    启动时不会再做任何复制(从而达到最小副本数量要求),hdfs集群刚启动的时候,默认30S钟的时间是出于安全期的,
    只有过了30S之后,集群脱离了安全期,然后才可以对集群进行操作 hdfs dfsadmin -safemode                                                            
                         
                            


6.hdfs-site.xml:
    <!-- 定义dataNode数据存储的节点位置,实际工作中,一般先确定磁盘的挂载目录,然后多个目录用“,”进行分割  -->
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:///root/hadoopData/datanodeDatas,file:///root/hadoopData/datanodeDatas2</value>
    </property>                                
                
7.查看日志信息:/root/hadoop/logs                                            
                                                            
8.列出 hadoop 中运行的 程序 
    1.hadoop job -list  
    2.使用 hadoop命令文件的 绝对路径:/root/hadoop/bin/hadoop job -list    
        


                                            
9.停止掉 hadoop中运行的程序:                                                    
    1.hadoop job -kill <jobID> 
    2.使用 hadoop命令文件的 绝对路径:/root/hadoop/bin/hadoop job -list                                                                
                                                            
                         
                                                            
                                                            
                                                            
                                                            

猜你喜欢

转载自blog.csdn.net/zimiao552147572/article/details/88602345