美文网首页
hadoop 入门

hadoop 入门

作者: ZHQIAN | 来源:发表于2017-10-06 15:50 被阅读0次

    hadoop的逻辑结构

    准备工作
    1,安装xshell,xftp
    2,虚拟机若干(可以先配置好一台,其他的复制)

    pc 主机名 IP
    1 master 192.168.56.100
    2 slave1 192.168.56.101
    3 slave2 192.168.56.102
    4 slave3 192.168.56.103

    配置好master,打开xshell连接到master,将hadoop-2.7.3.tar和jdk-8u91-linux-x64上传到maser的/usr/local中。

    # cd /usr/local && ls    //查看上传的两个文件是否在该文件夹中
    # rpm -ivh jdk-8u91-linux-x64.rpm    //安装jdk-8u91-linux-x64.rpm
    # tar -xvf hadoop-2.7.3.tar.gz    //解压 Hadoop
    # mv hadoop-2.7.3 hadoop
    # cd hadoop/etc/hadoop
    # vi hadoop-env.sh     //路径/usr/local/hadoop/etc/hadoop
    

    //将export JAVA_HOME=${JAVA_HOME}
    换成export JAVA_HOME=/usr/java/default

    # vi /etc/profile
    

    //在最后一行插入
    export PATH=$PATH:/usr/local/hadoop/bin:/usr/local/hadoop/sbin

    # source /etc/profile
    # shutdown -h now
    

    关闭master,将其另外复制三台(slave1,slave2,slave3)分别修改他们的主机名与IP,使得他们在同一网段,相互之间能ping通。
    用xshell连接所有虚拟机
    xshell-->工具-->发送键输入到所有回话(即当多台虚拟机都输入相同的命令是,只需在一台虚拟机上输入一次)

    # cd /usr/local/hadoop/etc/hadoop
    # vi core-site.xml
    

    //在倒数第二行插入脚本
    <property>
    <name>fs.defaultFS</name>;
    <value>hdfs://master:9000</value>;
    </property>

    # vi /etc/hosts
    

    //插入文本
    192.168.56.100 master
    192.168.56.101 slave1
    192.168.56.102 slave2
    192.168.56.103 slave3

    仅在master中启动namenode

    # hdfs namenode -format    //格式化namenode
    # hadoop-daemon.sh start namenode   //启动namenode
    # jps     
    2540 NameNode          //启动成功
    

    在其他的slave中启动DataNodels

    # hadoop-daemon.sh start datanode    //启动datanode
    # jps
    2286 DataNode      //启动成功
    

    master:

    # netstat -ntlp     //查看网络相关信息
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
    tcp        0      0 192.168.56.100:9000     0.0.0.0:*               LISTEN      1984/java           
    tcp        0      0 0.0.0.0:50070           0.0.0.0:*               LISTEN      1984/java           
    tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      808/sshd            
    tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1922/master         
    tcp6       0      0 :::22                   :::*                    LISTEN      808/sshd      
    

    tips:在宿主机的浏览器上浏览192.168.56.100:50070显示可以看到hadoop的外部界面。

    关闭集群(master上关闭namenode,slave上关闭datanode)
    在master上输入:

    # hadoop-daemon.sh stop namenode
    # jps
    2115 Jps        //现在的Java进程中已经没有namenode表示关闭成功
    

    同理在其他的slave上输入:

    # hadoop-daemon.sh stop datanode
    # jps
    10199 Jps
    

    如果我们有上千台slave,通过上面的管理固然是不方便的,所以我们需要对集群进行集中管理。

    在master中修改slaves在里面添加上你所有的slave (slaves的路径:/usr/local/hadoop/etc/hadoop)

    # cd /usr/local/hadoop/etc/hadoop
    # vi slaves
    

    插入:
    slave1
    slave2
    slave3
    tips:在master中输入命令,这个命令读取slaves里的列表,然后它会把这个命令发送到列表里的所有slave中。

    # start-dfs.sh      //启动集群。
    

    tisp:输入密码(master和所有的slave的密码)。
    用jps命令检查master的namenode和所有slave的datanode是否启动。

    使用ssh免密登录:

    # cd
    # cd .ssh && ls
    known_hosts     //里面只有一个文件。
    # ssh-keygen -t rsa
    Generating public/private rsa key pair.
    Enter file in which to save the key (/root/.ssh/id_rsa): 
    Enter passphrase (empty for no passphrase): 
    Enter same passphrase again: 
    Your identification has been saved in /root/.ssh/id_rsa.
    Your public key has been saved in /root/.ssh/id_rsa.pub.
    The key fingerprint is:
    30:a3:44:17:d3:aa:63:51:65:f3:97:34:ee:5d:49:4c root@master
    The key's randomart image is:
    +--[ RSA 2048]----+
    |    . +++   o oE |
    |   . ..o.o o o...|
    |    ..+.  . +  ..|
    |   ....+   o . . |
    |    .o  S   . .  |
    |    +            |
    |   . .           |
    |                 |
    |                 |
    +-----------------+
    
    #ls 
    id_rsa  id_rsa.pub  known_hosts     //里面多了id_rsa  id_rsa.pub。
    

    tips: id_rsa是当前root用户的私钥,id_rsa.pub是公钥。

    将公钥拷贝到所有的slave中

    # ssh-copy-id slave1
    passwd:     //输入slave1的密码。
    # ssh-copy-id slave2
    passswd:
    # ssh-copy-id slave3
    passwd:
    # ssh-copy-id master        //本机也得拷贝一份。
    passwd:
    

    tips:这时所有的slave和master的~/.ssh中都多了一个authorized_keys文件。

    # stop-dfs.sh       //关闭集群。
    Stopping namenodes on [master]
    master: stopping namenode
    slave3: stopping datanode
    slave1: stopping datanode
    slave2: stopping datanode
    Stopping secondary namenodes [0.0.0.0]
    0.0.0.0: stopping secondarynamenode     //namenode和datanode已经全部停了,可以用jps查看。
    # start-dfs.sh      //重新启动集群,这时将不再需要输入密码。
    
    # hadoop fs -ls /       //查看HTFS根目录的当前结构。这个时候该路径下是空的。
    

    找一个相对大一点的文件上传到上面的这个根目录下进行验证。(这里用/usr/local下的hadoop-2.7.3.tar.gz验证)
    tisp:在浏览器中浏览192.168.56.100:50070-->Utilities-->Browse the file system-->hadoop-2.7.3.tar.gz可以看到验证结果。

    # cd /usr/local
    # hadoop fs -put ./hadoop-2.7.3.tar.gz /
    # hadoop fs -ls /       //这时这个HTFS根目录下就多了一个文件(hadoop-2.7.3.tar.gz)。
    
    # cd /usr/local/hadoop/etc/hadoop
    # vi hdfs-site.xml
    

    最后第二行插入:
    <property>
    <name>dfs.replication</name>
    <value>2</value>
    </property>

    tisp:将一个文件的2块,分别备份2份。

    重启集群:

    # stop-dfs.sh
    # start-dfs.sh
    # cd /usr/local
    # hadoop fs -put jdk-8u91-linux-x64.rpm /       //上传文件,验证。
    

    如果有一台slave坏了,它会自动把该台slave中的文件备份到其他的slave中:

    # cd /usr/local/hadoop/etc/hadoop
    # vi hdfs-site.xml
    

    在倒数第二行插入:
    <property>
    <name>dfs.namenode.heartbeat.recheck-interval</name>
    <value>10000</value>
    </property>

    # stop-dfs.sh
    # start-dfs.sh
    

    在slave3中使用hadoop-daemon.sh stop datanode把datanode关掉。
    在浏览器中浏览192.168.56.100:50070-->Datanode确定slave3已经被down掉,在Utilities-->Browse the file system-->jdk-8u91-linux-64.rpm中确定该文件的2块备份都备份在slave1和slave2中。

    相关文章

      网友评论

          本文标题:hadoop 入门

          本文链接:https://www.haomeiwen.com/subject/xpuhyxtx.html