• hadoop安装


    ps:按这里的教程来安装的https://blog.csdn.net/sinat_30569973/article/details/52232850;

        修改了一些错误,加入了自己的理解。

    ~~~~~~~~~

    一.准备环境

    1.1. 安装包
    1)准备4台PC(虚拟机)
    2)安装配置Linux系统:CentOS-7.0-1406-x86_64-DVD.iso
    3)安装配置Java环境:jdk-8u91-linux-x64.gz
    4)安装配置Hadoop:hadoop-2.7.2-x64.tar.gz
    5)安装配置Hbase:hbase-1.2.1-bin.tar.gz
    
    1.2. 网络配置
      外部主机ip--windows下的虚拟网卡ip(192.168.64.1),对虚拟机内是192.168.64.2的路由。
      ip分配如下:
      master 192.168.64.128,
      slave1 192.168.64.131,  
      slave1 192.168.64.132,
      slave1 192.168.64.1331.3. 常用命令
    # systemctl start foo.service  #运行一个服务
    # systemctl stop foo.service  #停止一个服务
    # systemctl restart foo.service  #重启一个服务
    # systemctl status foo.service  #显示一个服务(无论运行与否)的状态
    # systemctl enable foo.service  #在开机时启用一个服务
    # systemctl disable foo.service  #在开机时禁用一个服务
    # systemctl is-enablediptables.service  #查看服务是否开机启动
    # reboot #重启主机
    # shutdown -h now  #立即关机
    # source /etc/profile  #配置文件修改立即生效
    
    # yum install net-tools
    # yum update 更新所有组件。

    二.安装配置CentOS

    2.1安装CentOS
    2.2配置IP
      2.2.1检查IP
    # ip addr  
      或
    # ip link
     2.2.2配置IP和网管
    #cd/etc/sysconfig/network-scripts #进入网络配置文件目录
    # find ifcfg-en*  #查到网卡配置文件,例如ifcfg-en1
    # vi ifcfg-en1  #编辑网卡配置文件
        或
    # vi/etc/sysconfig/network-scripts/ifcfg-en1 #编辑网卡配置文件
       配置内容:
    BOOTPROTO=static  #静态IP配置为static,动态配置为dhcp
    ONBOOT=yes #开机启动
    IPADDR=202.196.37.40  #IP地址
    NETMASK=255.255.255.0  #子网掩码
    GATEWAY=202.196.37.254
    DNS1=202.196.35.67 
       # systemctl restart network.service  #重启网络
    2.2.3配置hosts
    
    # vi /etc/hosts
    编辑内容: 一定去掉 127.0.0.1 localhost 等;
    192.168.64.128 master
    192.168.64.131 slave1
    192.168.64.132 slave2
    192.168.64.133 slave3
    
    2.3关闭防火墙 ,需要管理员密码。
    # systemctl status firewalld.service  #检查防火墙状态
    # systemctl stop firewalld.service  #关闭防火墙
    # systemctl disable firewalld.service  #禁止开机启动防火墙
    
    2.4时间同步
    # sudo yum install -y ntp  #安装ntp服务
    # sudo ntpdate cn.pool.ntp.org  #同步网络时间
        --
    [oscar@bogon ~]$ ntpdate cn.pool.ntp.org
    31 Mar 20:12:39 ntpdate[62993]: bind() fails: Permission denied
    [oscar@bogon ~]$ sudo ntpdate cn.pool.ntp.org
    [sudo] oscar 的密码:
    31 Mar 20:13:51 ntpdate[63014]: step time server 85.199.214.101 offset 14.197753 sec
    [oscar@bogon ~]$ 
        --
    2.5安装配置jdk
       先卸载掉openjdk,在安装sun公司的jdk.
    2.5.1卸载自带jdk
             CentOS会自带OpenJdk,用命令java -version 查看。
      先查看有那些JDK相关。 命令:rpm -qa | grep java
    显示如下信息:
    [oscar@bogon ~]$ rpm -qa|grep java
    java-1.8.0-openjdk-1.8.0.131-11.b12.el7.x86_64
    java-1.7.0-openjdk-headless-1.7.0.141-2.6.10.5.el7.x86_64
    java-1.7.0-openjdk-1.7.0.141-2.6.10.5.el7.x86_64
    java-1.8.0-openjdk-headless-1.8.0.131-11.b12.el7.x86_64
    
    python-javapackages-3.4.1-11.el7.noarch
    tzdata-java-2017b-1.el7.noarch
    javapackages-tools-3.4.1-11.el7.noarch
    分别对应卸载: (以java开头的,带有openjdk的,才是该卸载的,其他不用的)
        sudo rpm -e --nodeps java-1.8.0-openjdk
        sudo rpm -e  --nodeps java-1.7.0-openjdk
        sudo rpm -e  --nodeps java-1.8.0-openjdk-headless 
        sudo rpm -e  --nodeps java-1.7.0-openjdk-headless 
    
    2.5.2 开启22端口
     检查22端口是否打开:lsof -i:22
     若没有,就开启sshd服务:service sshd start
     Linux下安装lrzsz,方便和windows的互通(上传和下载)  sudo yum -y install lrzsz
        rz  命令然后按回车,就会弹出一个窗口,然后你就在这个窗口找到你下载好的jdk,
        使用  rz  命令的好处就是你在哪里输入rz导入的安装包他就在哪里,不会跑到根目录下
    2.5.3 JDK安装
      方法1:
      下载jdk包(jdk-8u162-linux-x64.tar.gz)到windows下,用命令rz上传到你的linux服务器;
       cd到要安装的目录(CD的目录前,也要/符号)
       ---用 ls /home ,查看你上传的文件到底在哪个路径下;
    用 tar 解压缩(因为要创建文件夹,所以要权限sudo)
        sudo tar -zxvf /home/oscar/jdk-8u162-linux-x64.tar.gz
    
      方法2:
       下载jdk-8u161-linux-x64.rpm 到windows,并上传到linux;
       cd到要安装的目录(CD的目录前,也要/符号)
       运行以下的命令来安装:
          rpm -ivh jdk-8u25-linux-x64.rpm 
    
    另:这时安装包已经没用了,一般都会删掉安装包  
       rm -rf jdk-8u162-linux-x64.tar.gz 
            -f 不询问删除 , -r 递归删除
      
    
    2.5.3各个主机之间复制jdk
    master安装完后,直接复制到其他机器。
    # scp -r /usr/java slave1:/usr
    # scp -r /usr/java slave2:/usr
    # scp -r /usr/java slave3:/usr
     若默认是非管理员登录,会提示permission denied。  
        --解决方法是在机器名前,加root@,强调用root身份登录。
    
    2.5.4 配置jdk环境变量
    # sudo vi /etc/profile  
      ---(修改文件,需要管理员权限,sudo) 
    编辑内容,在文件最后加入(注意你当前安装的java版本号)
    export JAVA_HOME=/usr/java/jdk1.8.0_162
    export PATH=$JAVA_HOME/bin:$PATH
    exportCLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    # source/etc/profile  #使配置文件立即生效
    # java -version  #查看java版本,检查是否正确安装jdk。
    
    --另一种方法:
       在/etc/profile.d/下创建一个叫做java.sh 的文件,
       vi /etc/profile.d/java.sh
       把下面的命令添加到文件中:
    #!/bin/bash
    JAVA_HOME=/usr/java/jdk1.8.0_25/
    PATH=$JAVA_HOME/bin:$PATH
    export PATH JAVA_HOME
    export CLASSPATH=.
    保存并关闭文件。为了使它有执行的权限运行以下的命令:
        chmod +x /etc/profile.d/java.sh
    接下来,使刚才改变的环境变量永久有效运行以下下面的命令:
        source /etc/profile.d/java.sh
    
    2.6配置ssh无密钥访问
     分别在各个主机上检查ssh服务状态:
    # systemctl status sshd.service  #检查ssh服务状态
    # yum install openssh-server openssh-clients  #安装ssh服务,如果已安装,则不用执行该步骤
    # systemctl start sshd.service  #启动ssh服务,如果已安装,则不用执行该步骤
    
     分别在各个主机上生成密钥
      # ssh-keygen -t rsa  #生成密钥
    
      以下是把其他机器上的密钥拷贝到master上,为了区分改了名字。
    
    在slave1上
    # cp ~/.ssh/id_rsa.pub ~/.ssh/slave1.id_rsa.pub
    #scp~/.ssh/slave1.id_rsa.pub master:~/.ssh
    
    在slave2上
    # cp ~/.ssh/id_rsa.pub ~/.ssh/slave2.id_rsa.pub
    # scp ~/.ssh/slave2.id_rsa.pubmaster:~/.ssh 
    
    在slave3上
    # cp ~/.ssh/id_rsa.pub ~/.ssh/slave3.id_rsa.pub
    # scp ~/.ssh/slave3.id_rsa.pubmaster:~/.ssh
    
       ---以下是把密钥公约放在一起,发放给所有机器
        在master上
    # cd ~/.ssh
    # cat id_rsa.pub >> authorized_keys
    # cat slave1.id_rsa.pub >>authorized_keys
    # cat slave2.id_rsa.pub >>authorized_keys
    # cat slave3.id_rsa.pub >>authorized_keys
    # scp authorized_keys slave1:~/.ssh
    # scp authorized_keys slave2:~/.ssh
    # scp authorized_keys slave3:~/.ssh
    
       依次在所有机器上执行
        #chmod 700  .ssh
            #chmod 600  .ssh/authorized_keys
            #service sshd restart   ->重新启动ssh服务
       用命令 #ssh slave1 互相测试是否可以免密登陆。
    
       ----需要注意的是 SSH是针对用户的,在哪个用户下执行的目录,在哪个用户下生成.ssh文件夹。
       ----如果root和其他用户(如oscar)下都有.ssh的文件,linux只检查root下的文件,最终不能免密登录。

    三.安装配置hadoop

    3.1安装hadoop
    上传hadoop-2.7.2.tar.gz安装包到root根目录 
      --开xshell5,连接master,命令rz;
    解压安装
    # sudo tar -zxvf ~/hadoop-2.9.0.tar.gz 
    
    # rm -rf hadoop-2.9.0.tar.gz  #删除压缩包,可不删
    
    创建一些备用目录
    
    # cd  /usr/hadoop-2.9.0
    #mkdir tmp        #进入目录操作就可不带目录了。
    # mkdir /usr/hadoop-2.9.0/logs
    # mkdir /usr/hadoop-2.9.0/hdf
    # mkdir/usr/hadoop-2.9.0/hdf/data
    # mkdir /usr/hadoop-2.9.0/hdf/name
    
    -----以下是配置文件----
    
      3.1.1 在hadoop中配置hadoop-env.sh文件
      在文件 etc/hadoop/hadoop-env.sh中配置Java_Home
      # set to the root ofyour Java installation
      exportJAVA_HOME=/usr/java/jdk1.8.0_162
      
      3.1.2 修改yarn-env.sh配置Java_Home
        export JAVA_HOME=/usr/java/jdk1.8.0_162
    
    3.1.3 修改slaves
    # vi /usr/hadoop-2.7.2/etc/hadoop/slaves
    删除:localhost
    添加:
    slave1
    slave2
    slave3
    
      3.1.4 修改core-site.xml
    
    # vi/usr/hadoop-2.7.2/etc/hadoop/core-site.xml
    配置内容:
    <configuration>
      <property>
        <name>fs.default.name</name>
        <value>hdfs://master:9000</value>
      </property>
      <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/usr/hadoop-2.9.0/tmp</value>
      </property>
    </configuration>
    
    3.1.5修改hdfs-site.xml
    # vi /usr/hadoop-2.6.0/etc/hadoop/hdfs-site.xml
    
    配置内容:
    <configuration>
      <property>
        <name>dfs.datanode.data.dir</name>
        <value>/usr/hadoop-2.9.0/hdf/data</value>
        <final>true</final>
      </property>
      <property>
        <name>dfs.namenode.name.dir</name>
        <value>/usr/hadoop-2.9.0/hdf/name</value>
        <final>true</final>
      </property>
    </configuration>
    
    3.1.6修改mapred-site.xml
      #cd /usr/hadoop-2.7.2/etc/hadoop
      # cp  mapred-site.xml.template mapred-site.xml 
       --- mapred-site.xml 是指定所用的框架,但默认没有这文件,只有带.template后缀的文件。
      # vi 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>
      </preperty>
    </configuration>
    
    3.1.7修改yarn-site.xml
      # vi/usr/hadoop-2.7.2/etc/hadoop/yarn-site.xml
    配置内容:
    
    <configuration>
    
      <property>
    
        <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
    
        <value>org.apache.mapred.ShuffleHandler</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>
    
    </configuration>
    
    3.2各个主机之间复制hadoop
    # scp -r /usr/ hadoop-2.9.0 root@slave1:/usr
    # scp -r /usr/ hadoop-2.9.0 root@slave2:/usr
    # scp -r /usr/ hadoop-2.9.0 root@slave3:/usr
    
    3.3各个主机配置hadoop环境变量
    
    # vi /etc/profile
    编辑内容:
    export HADOOP_HOME=/usr/hadoop-2.9.0
    export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
    export HADOOP_LOG_DIR=/usr/hadoop-2.9.0/logs
    export YARN_LOG_DIR=$HADOOP_LOG_DIR 
    
    # source /etc/profile  #使配置文件生效
    
    3.4在master节点格式化namenode ,注意,一定不要在slave上格式化;
    # cd /usr/hadoop-2.9.0/sbin   #为啥非得CD到这个目录啊?不用吧。
    # hdfs namenode -format
    
    3.5完成之后,master节点启动HDFS
    
    ~补充:因为我不是用的root身份登录的,SSH的免密也不是用的root,所以普通用户可能没权限增删文件和执行程序,就需要额外给当前使用的用户hadoop文件夹以及子目录各种权限。命令如下,在各机器上都要执行。
     # sudo chown -R oscar:oscar /usr/hadoop-2.9.0
     # sudo chmod -R 777 /usr/hadoop-2.9.0
    
      现在,可以启动HDFS了:
    
    # cd /usr/hadoop-2.7.2/sbin
    # sh start-all.sh
    
    检查hadoop启动情况:
    http://192.168.64.128:50070    (hdfs管理界面)
    http://192.168.64.128:8088/cluster    (yarn管理界面)
    
    检查进程:
    # jps
    
     master主机包含ResourceManager、SecondaryNameNode、NameNode等,则表示启动成功,例如
    
    2212 ResourceManager
    2484 Jps
    1917 NameNode
    2078 SecondaryNameNode
    
    各个slave主机包含DataNode、NodeManager等,则表示启用成功,例如
    17153 DataNode
    17334 Jps
    17241 NodeManager
    
      另提示:在widows的hosts下也加入这些主机,更方便在外面访问。
          C:WindowsSystem32driversetc目录下可以找到host文件。
  • 相关阅读:
    $$Ctrl+shift+M分数罗马字母小写
    设置字体大小加粗斜体下划线
    无序列表有序列表
    数学公式插入
    文本居中、代码插入、图片插入
    VM 使用问题 | 安装失败->>注册表
    VM小技巧——虚拟机解决vm窗口太小的办法
    OneNet平台实践
    linux 打包 | autoconf 使用方法
    C 总结 | 复习注意点
  • 原文地址:https://www.cnblogs.com/dacude/p/8724294.html
Copyright © 2020-2023  润新知