Hadoop二:Hadoop伪分布式模式

Hadoop伪分布式模式

Hadoop2.x:

官网:hadoop.apache.org
三个组件:
HDFS:分布式文件系统,存储
MapReduce:分布式计算
Yarn:资源(cpu + memory)和JOB调度监控
文档地址:
    http://hadoop.apache.org/docs/r2.8.2/
部署方式:
1.单机模式(Standalone):1个Java进程
2.伪分布模式(Pseudo-Distribute Mode):开发|学习   多个Java进程
3.集群模式(Cluster Mode):生产 多态机器多个Java进程

http://hadoop.apache.org/docs/r2.8.2/hadoop-project-dist/hadoop-common/SingleCluster.html
伪分布式部署:HDFS
1.创建hadoop服务的一个用户
# useradd hadoop
# id hadoop
# vi /etc/sudoers
    hadoop ALL=(root) NOPASSWD:ALL
2.部署Java
使用:Oracle jdk1.8
尽力不要使用: Open JDk
    2.1、解压+环境变量
    2.2、CDH课 /usr/java
        最好:which java
3.部署ssh,确保其是运行的
查看:默认是已经安装
    service sshd status
4.解压hadoop
解压:
    software]# tar -zxvf hadoop-2.8.1.tar.gz
软连接:
    software]# ln -s /opt/software/hadoop-2.8.1 hadoop
修改用户和用户组:
    software]# chown -R hadoop:hadoop hadoop
        修改软连接
    software]# chown -R hadoop:hadoop hadoop/*
        修改软连接文件夹里面的内容
    software]# chown -R hadoop:hadoop hadoop-2.8.1
        修改原文件夹

    chown -R hadoop:hadoop 文件夹:修改文件夹和文件夹里面的内容
    chown -R hadoop:hadoop 软连接文件夹:修改软连接文件夹,不会修改软连接文件夹里面的
    chown -R hadoop:hadoop 软连接文件夹/*:软连接文件夹不修改,只修改软连接文件夹里面的
    
    software]# cd hadoop
    hadoop]# rm -rf *.txt
    hadoop]# ll
        bin:命令
        etc:配置文件
        lib:lib包
        sbin:启动和关闭hadoop里面的组件(进程)
5.切换hadoop用户和配置
进入hadoop用户:
    ~]# su -hadoop
进入hadoop文件夹:
    ~]$ cd /opt/software/hadoop
hadoop]$ cd /etc/hadoop
hadoop]$ ll
    hadoop-env.sh:hadoop配合环境
    core-site.xml:hadoop 核心配置文件
    hdfs-site.xml:针对于hdfs服务的  -->会起进程
    [mapred-site.xml:MapReduce计算所需要的配置文件] 只当在jar计算时才有
    yarn-site.xml:yarn服务的  -->会起进程
    slaves:集群的机器名称
hadoop]$ vi core-site.xml
    
        
                fs.defaultFS
                hdfs://localhost:9000
        
    
hadoop]$ vi hdfs-site.xml
    
        
            dfs.replication
            1
        
    
6.配置hadoop用户的ssh的信任关系
~]$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
~]$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
~]$ chmod 0600 ~/.ssh/authorized_keys
.ssh]$ ssh 机器名 date
    第一次输入需要yes
.ssh]$ ssh 机器名 date
    第二次输入不需要yes
7.格式化
hadoop]$ bin/hdfs namenode -format
    Storage directory: /tmp/hadoop-hadoop/dfs/name 
    1.默认的存储路径哪个参数配置?
    2.hadoop-hadoop指的是什么意思?
        core-site.xml
            hadoop.tmp.dir:/tmp/hadoop-${user.name}
        hdfs-site.xml
            dfs.namenode.name.dir : file://${hadoop.tmp.dir}/dfs/name
8.启动HDFS服务
删除不需要的cmd:
    sbin]$ rm -rf *.cmd
启动dfs:
    sbin]$ ./start-dfs.sh
        namenode(名称节点) : localhost
        datanode(数据节点) : localhost:
        secondary namenode(第二名称节点) : 0.0.0.0

        http://localhost:50070/
        默认的端口:50070

        web: localhost:9000

查看进程是否启动:
    sbin]$ ps -ef | grep hadoop

    问题:
        发现JAVA_HOME变量是存在的,无法启动HDFS服务

        无法找到JAVA_HOME:
            etc/hadoop]$ vi hadoop-env.sh
                export JAVA_HOME=/usr/java/jdk1.8.0_45
        之后再重新启动dfs
9.使用命令(hadoop、hdfs)
在hdfs上创建user文件夹:
    bin]$ ./hdfs dfs -mkdir /user
在hdfs上创建hadoop文件夹:
    bin]$ ./hdfs dfs -mkdir /user/hadoop
创建本地log文件:
    bin]$ echo "123456" > rz.log
上传本地文件到hdfs:
    bin]$ ./hadoop fs -put rz.log hdfs://localhost:9000/
查看hdfs里面的文件:
    bin]$ ./hadoop fs -ls hdfs://localhost:9000/
        或者
    bin]$ ./hadoop fs -ls /
10.想要修改hdfs://localhost:9000为hdfs://IP地址:9000
停止hdfs服务:
    bin]$ ../sbin/stop-dfs.sh 
修改配置文件:
    bin]$ vi ../etc/hadoop/core-site.xml 
        
            
                    fs.defaultFS
                    hdfs://192.168.137.201:9000
            
        
重新格式化:
    bin]$ ./hdfs namenode -format
启动hdfs服务:
    bin]$ ../sbin/start-dfs.sh 
        namenode(名称节点) : 主机名(admin)
        datanode(数据节点) : localhost:
        secondary namenode(第二名称节点) : 0.0.0.0
查看端口文件是否启动:
    bin]$ netstat -nlp|grep 9000
11.修改HDFS的服务以主机名(admin)启动
针对于datanode修改:
    hadoop]$ vi slaves
        admin(主机名)
针对于secondarynamenode修改:
    hadoop]$ vi hdfs-site.xml 
        
            
                    dfs.replication
                    1
            

            
                     dfs.namenode.secondary.http-address
                     admin(主机名):50090
            
            
                 dfs.namenode.secondary.https-address
                 admin(主机名):50091
            
        
切换到sbin:
    hadoop]$ cd ../../sbin
停止hdfs:
    sbin]$ ./stop-dfs.sh
启动hdfs:
    sbin]$ ./start-dfs.sh 
12.Yarn部署
MapReduce + Yarn
部署Yarn:
    ResourceManager 
    NodeManager
拷贝配置文件:
    hadoop]# cp mapred-site.xml.template mapred-site.xml
修改配置文件:
    hadoop]# vi mapred-site.xml
        
            mapreduce.framework.name
            yarn
        
配置yarn文件:
    hadoop]# vi yarn-site.xml
        
            
                
                    yarn.nodemanager.aux-services
                    mapreduce_shuffle
                
            
修改权限:
    hadoop]# chown hadoop:hadoop *
切换用户:
    hadoop]# su - hadoop
进入hadoop:
    ~]$ cd /opt/software/hadoop
启动yarn服务:
    hadoop]$ sbin/start-yarn.sh

web界面: http://192.168.137.201:8088/
13.MR Job测试
MapReduce: java代码写的,map(映射)函数和reduce(归约)函数
查找jar包:
    hadoop]$ find ./ -name "*example*"
执行任务:
    hadoop]$ bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.1.jar pi 5 10
如何在yarn的web界面查看application(应用|job)日志?

如何使用rundeck调度2的测试案例?
1.root shell脚本
2.在1步骤的shell脚本:
su - hadoop -c "/opt/software/hadoop/bin/hadoop jar /opt/software/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.1.jar pi 5 10"
14.停止yarn
    sbin]$ ./stop-yarn.sh

补充:
1.配置root用户的ssh的信任关系
当我们第一次执行:ssh localhost date时是需要输入yes和密码,之后会在.ssh下生成一个名字为known_hosts的文件。

    如果.ssh下面存在known_hosts文件,则再次输入的时候不用输入yes。

    使用ssh的时候不输入密码:
        # ssh-keygen
        之后一直回车,会生成id_rsa.pub和id_rsa两个文件
        id_rsa:私钥
        id_rsa.pub:公钥

        .ssh]# cat id_rsa.pub > authorized_keys
        .ssh]# ssh 机器名 date
2.某个服务数据目录在A盘(500G),还剩10G,/a/dfs/data
添加B盘2T.
    1.A盘:mv /a/dfs /b/
    2.B盘:ln -s /b/dfs /a/  
    现在A盘存在的是软连接之后的文件夹,所有A盘的服务都是可以正常启动的,但是最后的数据都是存在B盘的dfs,A盘的只是一个假象
    3.检查(修改)A,B盘的文件夹的用户和用户组的权限
3.查看网页内容
    curl http://localhost:50070
疑问:
1.多个机器的HDFS的数据目录,数据不均衡,怎么办?
2.一台机器的多个磁盘数据不均衡,怎么办?
作业:
1.hadoop官网
http://hadoop.apache.org/docs/r2.8.2/hadoop-project-dist/hadoop-common/SingleCluster.html
http://hadoop.apache.org/docs/r2.8.2/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml
2.hadoop部署---hdfs
3.将10,11做一下
4.拓展
hadoop001(第一台虚拟机) hadoop002(第二台虚拟机)配置互相信任关系,说白了,不需要输入密码,进入对方执行命令
http://blog.itpub.net/30089851/viewspace-1992210/

解决方案;
    hadoop002(虚拟机2):
    scp id_rsa.pub hadoop001:/root/.ssh/id_rsa.pub002
    hadoop001(虚拟机1):
    cat /root/.ssh/id_rsa.pub002 >> /root/.ssh/authorized_keys

【来自@若泽大数据】

你可能感兴趣的:(Hadoop二:Hadoop伪分布式模式)