• Hadoop 2.5.2 环境搭建


    Hadoop 生态环境主要有hadoop 、zookeeper、hbase、hive 等构成
    1.搭建Java环境
    2.搭建hadoop环境,搭建成功后运行/sbin/start-all.sh即可启动所有hadoop相关服务,启动成功后有相应的进程,通过jps命令查看
    3.如果需要可以进一步搭建zookeeper、hbase、hive等。其中hive搭建之前需要先安装mysql数据库。所有服务搭建成功后均有相应的进程,用jps查看。

    1.Hadoop 平台环境

    操作系统:CentOS-6.5-x86_64
    JAVA版本:jdk-8u111-linux-x64
    Hadoop版本:hadoop-2.5.2

    2.安装操作操作系统

    2.1 准备安装镜像

    CentOS-6.5-x86_64-bin-DVD1

    2.2安装教程

    [安装教程](http://www.cnblogs.com/xia520pi/archive/2012/05/16/2503770.html)
    或者见自己安装截图

    2.3 建立一般用户

    //新增用户
    #useradd hadoop
    //设置密码
    #passwd hadoop 
    

    2.4 关闭防火墙SELinux

    关闭防火墙

    //临时关闭
    #service iptables stop
    //永久关闭
    #chkconfig iptables off
    #service ip6tables stop
    #chkconfig ip6tables off
    

    关闭SELinux

    #vim /etc/sysconfig/selinux
    SELINUX=enforcing
    |
    SELINUX=disable
    

    执行如下命令

    #setenforce 0
    #getenforce
    

    3.hadoop安装

    3.1 环境说明

    hostname username IP
    master hadoop 192.168.207.10
    slave1 hadoop 192.168.207.11
    slave2 hadoop 192.168.207.12

    3.2网络配置

    1.修改主机名

    //查看当前主机名
    #hostname
    //修改当前主机名
    #vim /etc/sysconfig/network
    更改HOSTNAME选项
    

    2.修改当前机器IP

    #vim /etc/sysconfig/network-scripts/ifcfg-eth0
    DEVICE 接口名(设备,网卡)
    BOOTPROTO IP的配置方法(static:固定IP, dhcpHCP, none:手动)
    HWADDR MAC地址
    ONBOOT 系统启动的时候网络接口是否有效(yes/no)
    TYPE 网络类型(通常是Ethemet)
    NETMASK 网络掩码
    IPADDR IP地址
    IPV6INIT IPV6是否有效(yes/no)
    GATEWAY 默认网关IP地址
    

    要记住配置完成时,要用以下代码重新启动网络服务。

    #service network restart
    

    3.配置hosts文件(域名解析)

    #vim /etc/hosts       
    

    3.3 SSH无密钥验证配置

    1.SSH无密钥原理
    Master(NameNode| JobTracker)作为客户端,要实现无密码公钥认证,连接到服务器Slave(DataNode|Tasktracker)上时,需要在Master上生成一个密钥对,包括一个公钥和一个私钥,而后将公钥复制到所有Slave上。当master通过SSH连接Slave时,Slave就会生成一个随机数并用Master的公钥对随机数进行加密,并发送给Master。master收到加密数之后再用私钥解密,并将解密数回传给slave,slave确认解密数无误之后就允许Master进行连接了,这就是一个公钥认证的过程,期间不需要用户手工输入密码。重要过程是将客户端Master复制到slave上。
    2.配置master免密钥登录slave(该过程用hadoop用户完成)
    生成密钥(该过程需要在master和slave上分别执行)

    //切换用户
    $su hadoop
    //生成密钥
    $ ssh-keygen -t rsa
    

    id_rsa.pub追加到授权key中(只需要将master节点的公钥追加到authorized_keys
    $ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
    在master上更改authorized_keys的权限
    chmod 600 authorized_keys
    authorized_keys复制到所有slave节点

    $scp ~/.ssh/authorized_keys hadoop@slave1:~/.ssh/
    $scp ~/.ssh/authorized_keys hadoop@slave2:~/.ssh/
    

    测试,master免密钥登录所有slave节点

    $ssh slave1
    $ssh slave2
    

    3.4 JAVA环境安装和配置

    已共享文件夹的形式将JAVA软件压缩包共享到Master主机。
    1.root身份进行安装,如果系统已经安装了其他版本的java请先卸载旧版,再进行安装。

    //解压
    #tar -zxvf jdk-8u111-linux-x64.tar.gz
    //移动文件夹到/usr下并命名为java
    #mv  jdk1.8.0_111 /usr/java
    

    2.配置java环境变量【替换成自己的java安装路径和版本】,这一点需要特别的注意路径

    #vim /etc/profile
    //在尾部追加
    export JAVA_HOME=/usr/java
    export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
    export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
    

    3.使配置生效

    $source /etc/profile
    

    4.验证是否安装成功

    $java -version
    

    5.安装其他机器,使用scp命令将java文件夹和profile文件复制到其他机器

    scp -r /usr/java hadoop@slave1:/usr/
    scp -r /usr/java hadoop@slave2:/usr/
    scp -r /etc/profile hadoop@slave1:/etc/profile
    scp -r /etc/profile hadoop@slave2:/etc/profile
    

    3.5 hadoop集群安装

    所有的机器上都要安装hadoop,现在就先在master'服务器上安装,然后其他服务器利用scp复制文件实现。
    1.同样利用共享文件夹方式,将压缩包分享到虚拟机,解压

    #tar -zvxf hadoop-2.5.2tar.gz 
    #mv hadoop-2.5.2 /home/hadoop/hadoop
    #chown -R hadoop:hadoop /home/hadoop
    

    2.配置环境变量(在尾部追加)

    # vim  /etc/profile        # set hadoop environment
    export HADOOP_HOME=/home/hadoop/hadoop
    export HADOOP_COMMON_HOME=$HADOOP_HOME
    export HADOOP_HDFS_HOME=$HADOOP_HOME
    export HADOOP_MAPRED_HOME=$HADOOP_HOME
    export HADOOP_YARN_HOME=$HADOOP_HOME
    export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
    export CLASSPATH=.:$JAVA_HOME/lib:$HADOOP_HOME/lib:$CLASSPATH
    export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
    

    使环境变量立即生效,注意在哪个用户下执行该命令,环境变量在哪个用户下生效

    #su hadoop
    $source /etc/profile
    

    3.配置hadoop文件
    首先进入配置文件所在的文件夹:

    #cd /home/hadoop/hadoop/etc/hadoop
    

    (1)core-site.xml

    #vim core-site.xml
    <configuration>
        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://master:9000</value>
        </property>
        <property>
                <name>hadoop.tmp.dir</name>
                <value>file:/home/hadoop/hadoop/hadoop_tmp</value>
                <!--需要自己创建hadoop_tmp文件夹-->
        </property>
        <property>
                <name>io.file.buffer.size</name>
                <value>131072</value>
        </property>
        <property>
                <name>hbase.rootdir</name>
                <value>hdfs://master:9000/hbase</value>
        </property>
    </configuration>
    

    (2)hdfs-site.xml

    #vim hdfs-site.xml
    <configuration>
          <property>
                  <name>dfs.replication</name>
                  <value>2</value>
          </property>
          <property>
                  <name>dfs.namenode.secondary.http-address</name>
                  <value>master:9001</value>
          </property>
          <property>
                  <name>dfs.namenode.name.dir</name>
                  <value>file:/home/hadoop/hadoop/dfs/name</value>
                  <description>namenode上存储hdfs元数据</description>
          </property>
          <property>
                  <name>dfs.datanode.data.dir</name>
                  <value>file:/home/hadoop/hadoop/dfs/data</value>
                  <description>datanode上数据块物理存储位置</description>
          </property>
          <property>
                  <name>dfs.webhdfs.enabled</name>
                    <value>true</value>
          </property>
    </configuration> 
    

    (3)mapred-site.xml

    #vim 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>
          <property>
                <name>mapreduce.jobtracker.http.address</name>
                <value>NameNode:50030</value>
          </property>
    </configuration> 
    

    (4) yarn-site.xml

    #vim yarn-site.xml
    <configuration>
          <property>
                  <name>yarn.nodemanager.aux-services</name>
                  <value>mapreduce_shuffle</value>
          </property>
          <property>
                  <name>yarn.resourcemanager.address</name>
                  <value>master:8032</value>
          </property>
          <property>
                  <name>yarn.resourcemanager.scheduler.address</name>
                  <value>master:8030</value>
          </property>
          <property>
                  <name>yarn.resourcemanager.resource-tracker.address</name>
                  <value>master:8031</value>
          </property>
          <property>
                  <name>yarn.resourcemanager.admin.address</name>
                  <value>master:8033</value>
          </property>
          <property>
                  <name>yarn.resourcemanager.webapp.address</name>
                  <value>master:8088</value>
          </property>
          <property>
                  <name>yarn.resourcemanager.zk-address</name>
                  <value>master:2181,slave1L2181,slave2:2181</value>
          </property>
          <property>
                  <name>yarn.log-aggregation-enable</name>
                  <value>true</value>
          </property>
    </configuration>
    

    (5)修改slaves文件,添加datanode结点的hostname到slaves文件中

    slave1
    slave2
    

    (6)hadoop-env.sh

    #vim /home/hadoop/hadoop/etc/hadoop/hadoop-env.sh
    export JAVA_HOME=${JAVA_HOME}
    |
    export JAVA_HOME=/usr/java
    export HADOOP_COMMON_LIB_NATIVE_DIR=/home/hadoop/hadoop/lib/native
    

    (7)最后将整个/home/hadoop/hadoop文件夹及其子文件夹使用scp复制到slave的相同目录中

    $ scp -r /home/hadoop/hadoop hadoop@slave1:/home/hadoop/
    $ scp -r /home/hadoop/hadoop hadoop@slave2:/home/hadoop/
    

    4.运行 hadoop
    (1)格式化(*只能运行一次,如果想多次运行需要删除dfs文件夹中的data和name文件)

    $hdfs namenode -format
    

    (2)启动hadoop

    $ start-dfs.sh
    $ start-yarn.sh
     命令来代替
    $ start-all.sh
    

    (3)jps查看进程
    master主节点进程:

    slave从属节点进程:

    (4)通过浏览器查看集群运行状态
    概览:http://192.168.207.10:50070/
    集群:http://192.168.207.10:8088/
    JobHistory:http://192.168.207.10:19888
    jobhistory是Hadoop自带的一个历史服务器,记录Mapreduce历史作业。默认情况下,jobhistory没有启动,可用以下命令启动:

    $ sbin/mr-jobhistory-daemon.sh start historyserver
    

    5.测试hadoop
    (1)建立文件

    $ vim wordcount.txt
    hello you
    hello me
    hello everyone
    

    (2)在HDFS上建立目录

    $ hadoop fs -mkdir /input
    $hadoop fs -mkdir /output
    

    (3)上传文件

    $ hadoop fs -put wordcount.txt  /input
    

    (4)执行wordcount程序

    $ hadoop jar /home/hadoop/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-
    2.5.2.jar wordcount /input /output/wordcount/
    

    (5)查看结果

    $ hadoop fs -text /output/wordcount/part-r-00000
    

  • 相关阅读:
    linux内核中听过就能记住的概念
    专治不会看源码的毛病--spring源码解析AOP篇
    接口性能优化方案及其理论依据
    Redis各种数据结构性能数据对比和性能优化实践
    iOS 防止UIButton重复点击
    iOS开发之OC与swift开发混编教程,代理的相互调用,block的实现。OC调用Swift中的代理, OC调用Swift中的Block 闭包
    Git简单使用
    软考和软件设计师
    libstdc++适配Xcode10与iOS12
    Objective-C Block与函数指针比较
  • 原文地址:https://www.cnblogs.com/bbn0111/p/6928725.html
Copyright © 2020-2023  润新知