zoukankan      html  css  js  c++  java
  • Hadoop1.0.3安装部署

    0x00 大数据平台相关链接

    官网:http://hadoop.apache.org/
    主要参考教程:http://www.cnblogs.com/xia520pi/archive/2012/05/16/2503949.html

    0x01 hadoop平台环境

    操作系统:CentOS-6.5-x86_64
    Java版本:jdk_1.8.0_111
    Hadoop版本:hadoop-1.0.3

    0x02 安装操作系统

    2.1 准备安装镜像

    CentOS-6.5-x86_64-bin-DVD1.iso

    2.2 CentOS官方网站与文档

    官网主页:http://www.centos.org/
    官方WiKi:http://wiki.centos.org/
    官方中文文档:http://wiki.centos.org/zh/Documentation
    安装说明:http://www.centos.org/docs/

    2.3 安装教程

    http://www.cnblogs.com/xia520pi/archive/2012/05/16/2503770.html

    2.4 建立一般用户

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

    2.5 关闭防火墙机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
    

    0x03 hadoop安装

    3.1 环境说明

    hostname username IP
    master hadoop 192.168.1.10
    slave1 hadoop 192.168.1.11
    slave2 hadoop 192.168.1.12

    3.2 网络配置

    • 修改当前主机名
    //查看当前主机名
    # hostname
    //修改当前主机名
    vim /etc/sysconfig/network
    NETWORKING 是否利用网络
    GATEWAY 默认网关
    IPGATEWAYDEV 默认网关的接口名
    HOSTNAME 主机名
    DOMAIN 域名
    
    • 修改当前机器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地址
    

    • 配置`hosts'文件(必须)
    # vim /etc/hosts
    192.168.1.2 master
    192.168.1.3 slave1
    192.168.1.4 slave2
    

    3.3 SSH无密钥验证配置

    • SSH无密钥原理

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

    • 配置master和slave互相无密钥登录

    所有密钥都是hadoop用户的公钥和私钥,即以hadoop用户的身份来执行生成密钥的命令。

    $ ssh-keygen –t rsa

    这条命令是生成其无密码密钥对,询问其保存路径时直接回车采用默认路径。生成的密钥对:id_rsaid_rsa.pub,默认存储在/home/hadoop/.ssh目录下。
    在所有slave节点执行该命令生成其密钥对。
    将所有slave节点的公钥上传到master节点

    $ scp ~/.ssh/id_rsa.pub hadoop@master:~/.ssh/slave1_id_rsa.pub
    $ scp ~/.ssh/id_rsa.pub hadoop@master:~/.ssh/slave2_id_rsa.pub
    
    • 接着在Master节点上做如下配置,把id_rsa.pub追加到授权的key里面去

    $ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

    将所有slave的公钥追加到authorized_keys。

    • 修改authorized_keys的权限

    $ chmod 600 ~/.ssh/authorized_keys

    • 将authorized_keys复制到所有的slave节点
    $ scp ~/.ssh/authorized_keys hadoop@slave1:~/.ssh/
    $ scp ~/.ssh/authorized_keys hadoop@slave2:~/.ssh/
    
    • 验证master和slave可以互相免密钥登录。
    //master
    $ ssh slave1
    //slave1
    $ ssh master
    ...
    

    3.4 所需软件

    • JDK

    下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html
    JDK版本:jdk-8u111-linux-x64.tar.gz

    • hadoop

    下载地址:http://hadoop.apache.org/releases.html
    hadoop版本:hadoop1.0.3

    3.5 Java环境安装和配置

    root身份进行安装,如果系统已经安装了其他版本的java请先卸载旧版,再进行安装。

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

    最好能利用软链,方便管理多版本应用软件

    配置java环境变量【替换成自己的java安装路径和版本

    # vim /etc/profile
    //在文件尾部追加
    # set java environment
    export JAVA_HOME=/usr/java/jdk1.6.0_31
    export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
    export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
    

    使配置立即生效

    $ source /etc/profile

    验证是否安装成功

    $ java -version

    安装其它机器,使用linux scp命令将java文件夹和profile文件复制到其它机器即可。

    scp -r /usr/java hadoop@slave1:/usr/

    3.6 hadoop集群安装

    所有的机器上都要安装hadoop,现在就先在Master服务器安装,然后其他服务器按照步骤重复进行即可。安装和配置hadoop需要以root的身份进行。
    在/usr目录下新建文件夹cloud

    # mkdir /usr/cloud

    解压

    # tar -zxvf hadoop-1.0.3.tar.gz
    //移动到/usr/cloud文件夹下
    # mv hadoop-xxx /usr/cloud/hadoop
    

    将读权限分配给hadoop用户

    # chown -R hadoop:hadoop /usr/cloud/hadoop

    配置hadoop环境变量【注意替换】

    # vim /etc/profile
    //最后追加
    # set hadoop path
    export HADOOP_HOME=/usr/hadoop
    export PATH=$PATH :$HADOOP_HOME/bin
    

    使配置立即生效

    # source /etc/profile

    创建tmp文件夹

    # mkdir /usr/cloud/hadoop/tmp

    3.7 hadoop集群配置

    hadoop2.5.2配置文件目录变更为/hadoop/etc/hadoop

    • 配置hadoop-env.sh
    # vim /usr/cloud/hadoop/conf/hadoop-env.sh
    //在文件末尾追加
    # set java environment
    export JAVA_HOME=/usr/java
    
    • 配置core-site.xml

    修改Hadoop核心配置文件core-site.xml,这里配置的是HDFS的地址和端口号。

    <configuration>
        <property>
            <name>hadoop.tmp.dir</name>
            <value>/usr/hadoop/tmp</value>
            (备注:请先在 /usr/hadoop 目录下建立 tmp 文件夹)
            <description>A base for other temporary directories.</description>
        </property>
    <!-- file system properties -->
        <property>
            <name>fs.default.name</name>
            <value>hdfs://192.168.1.2:9000</value>
        </property>
    </configuration>
    

    备注:如没有配置hadoop.tmp.dir参数,此时系统默认的临时目录为:/tmp/hadoo-hadoop。而这个目录在每次重启后都会被干掉,必须重新执行format才行,否则会出错。

    • 配置hdfs-site.xml

    修改Hadoop中HDFS的配置,配置的备份方式默认为3。

    <configuration>
        <property>
            <name>dfs.replication</name>
            <value>1</value>
            (备注:replication 是数据副本数量,默认为3,salve少于3台就会报错)
        </property>
    <configuration>
    
    • 配置mapred-site.xml

    修改Hadoop中MapReduce的配置文件,配置的是JobTracker的地址和端口。

    <configuration>
        <property>
            <name>mapred.job.tracker</name>
            <value>http://192.168.1.2:9001</value>
        </property>
    </configuration>
    
    • 配置master文件

    修改localhostmaster

    # vim /usr/cloud/hadoop/conf/masters

    • 配置slaves文件【master主机独有】

    去掉"localhost",每行只添加一个主机名,把剩余的Slave主机名都填上。

    # vim /usr/cloud/hadoop/conf/slaves

    • 配置其他机器

    将 Master上配置好的hadoop所在文件夹"/usr/cloud/"复制到所有的Slave的"/usr/"目录下(实际上Slave机器上的slavers文件是不必要的, 复制了也没问题)。用下面命令格式进行。(备注:此时用户可以为hadoop也可以为root)

    # scp -r /usr/cloud hadoop@slave1:/usr/
    # scp -r /usr/cloud hadoop@slave2:/usr/
    

    在slave上配置java和hadoop的环境变量

    3.8 启动及验证

    • 格式化HDFS文件系统

    在master上使用普通用户hadoop进行操作。(备注:只需一次,下次启动不再需要格式化,只需 start-all.sh)

    # hadoop namenode -format

    • 启动hadoop

    在启动前关闭集群中所有机器的防火墙,不然会出现datanode开后又自动关闭。

    # ./start-all.sh

    可以通过以下启动日志看出,首先启动namenode 接着启动datanode1,datanode2,…,然后启动secondarynamenode。再启动jobtracker,然后启动tasktracker1,tasktracker2,…。
    启动 hadoop成功后,在 Master 中的 tmp 文件夹中生成了 dfs 文件夹,在Slave 中的 tmp 文件夹中均生成了 dfs 文件夹和 mapred 文件夹。

    • 验证hadoop

    方法1:在Master上用 java自带的小工具jps查看进程。

    在Slave1上用jps查看进程。

    方法2:用hadoop dfsadmin -report

    用这个命令可以查看Hadoop集群的状态。

    • 网页查看集群

    访问"http:192.168.1.2:50030"
    访问"http:192.168.1.2:50070"

    0x04 常见问题

    4.1 关于 Warning: $HADOOP_HOME is deprecated

    经查hadoop-1.0.0/bin/hadoop脚本和"hadoop-config.sh"脚本,发现脚本中对HADOOP_HOME的环境变量设置做了判断,笔者的环境根本不需要设置HADOOP_HOME环境变量。
    解决方案一:编辑"/etc/profile"文件,去掉HADOOP_HOME的变量设定,重新输入hadoop fs命令,警告消失。
    解决方案二:编辑"/etc/profile"文件,添加一个环境变量,之后警告消失:

    export HADOOP_HOME_WARN_SUPPRESS=1
    # source /etc/profile
    

    博客中在配置hadoop是master的配置不需要改,否则会出错!!!!

    2017年1月20日, 星期五

    作者:王宁

    -------------------------------------------

    个性签名:路漫漫其修远兮,吾将上下而求索。

    如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!

    版权声明:自由转载-非商用-非衍生-保持署名 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 进行许可。

  • 相关阅读:
    【荐2】Total Commander 7.57 配置选项 个性化设置备份,,,开启时如何自动最大化???(二)
    【荐1】Total Commander 7.57 个人使用设置 及 常用快捷键 备忘
    Total Commander 集成、调用 Beyond Compare比较文件
    Linux/CentOS下开启MySQL远程连接,远程管理数据库
    如何查看、修改Linux的系统时间
    Linux cp (复制)命令简介
    Linux网络下载命令 wget 简介
    Linux如何下解压windows下的.zip和.rar文件
    Linux tar (打包.压缩.解压缩)命令说明 | tar如何解压文件到指定的目录?
    解决宿主机不能访问虚拟机CentOS中的站点 | 更新CentOS防火墙设置开启80端口访问
  • 原文地址:https://www.cnblogs.com/ning-wang/p/6397006.html
Copyright © 2011-2022 走看看