hadoop常用命令,脚本分析,服务启动,系统配置

ClassLoader

类加载器。
将.class文件加载内存中,内存中的method area。
类的静态代码块在加载期间调用(初始化类),可以手动设置不初始化.
ClassLoader.getSystemClassLoader();

ssh权限问题

1.~/.ssh/authorized_keys
    644
2.$/.ssh
    700
3.root

tmp目录属于root权限,但对普通用户都具有777权限

配置SSH

生成密钥对$>ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
添加认证文件$>cat ~/.ssh/id_rsa.pub > ~/.ssh/authorized_keys
权限设置,文件和文件夹权限除了自己之外,别人不可写。$>chmod 700 ~/.ssh$>chmod 644 ~/.ssh/authorized_keys

scp

远程复制.

rsync

远程同步,支持符号链接。
rsync -lr xxx xxx

完全分布式

1.配置文件
[core-site.xml]
fs.defaultFS=hdfs://s201:8020/

[hdfs-site.xml]
replication=1       //伪分布
replication=3       //完全分布


[mapred-site.xml]
mapreduce.framework.name=yarn

[yarn-site.xml]
rm.name=s201

[slaves]   //数据节点
s202
s203
s204

2.分发文件
    a)ssh
    openssh-server      //sshd
    openssh-clients     //ssh
    openssh             //ssh-keygen

    b)scp/rsync

3.格式化文件系统
    $>hadoop namenode -format

4.启动hadoop所有进程
    //start-dfs.sh + start-yarn.sh
    $>start-all.sh

5.xcall.sh jps

    在/usr/local/bin下创建软连接
    jps-->ln -s /soft/jdk/bin/jps  /usr/local/bin/jps 
    java-->ln -s /soft/jdk/bin/java  /usr/local/bin/java

6.查看jps进程
    $>xcall.sh jps

7.关闭centos的防火墙
    $>sudo service firewalld stop       // <=6.5    start/stop/status/restart
    $>sudo systemctl stop firewalld     // 7.0 停止   start/stop/status/restart

    $>sudo systemctl disable firewalld  //关闭
    $>sudo systemctl enable firewalld   //启用

最终通过webui

    http://s201:50070/
    http://s201:50070/              //namenode
    http://s201:50090/              //2nn
    http://s201:50075/              //datnode
    http://s201:8088/               //资源管理器管理ui

hdfs

hadoop distributed file system,hadoop分布式文件系统。
逻辑上的。
128M文件block大小。可以配置。

寻道时间:10毫秒左右 * 100 * 100M/s = 128M

符号连接

1.修改符号连接的owner
    $>chown -h centos:centos xxx        //-h:针对连接本身,而不是所指文件.

2.修改符号链接
    $>ln -sfT index.html index          //覆盖原有的连接。-f:force,删除存在的目标文件
                                            -T:把LINK_NAME作为一个普通的文件

if命令

1.逻辑表达式
if[ !exp ]    //非运算
if[ !-d$dir]  //目录不存在
if[ exp1 -a exp2 ] //and
if[ exp1 -o exp2 ] //or
if[ $a = $b ]    //=用作赋值时两边不能有空格
                //=用作判断时必须有空格
if[ $a != $b ]  //!=
if[ -n$str ]    //非空
if[ -z$str ]    //为空
if[ $str ]      //非空,类似于-n
if[ -f file ]   //文件存在

if[ -e file ]   //文件(夹)存在
if[ -d file ]   //目录
if[ -s file ]   //文件夹存在且非空
if[ -S file ]   //文件私Socket文件
if[ -r file ]   //文件可读
if[ -w file ]   //文件可写
if[ -x file ]   //文件可执行

核心模块 ------------

Hadoop Common:                          公共模块,支持其他模块。The common utilities that support the other Hadoop modules.
Hadoop Distributed File System (HDFS™): 分布式文件系统,高吞吐量进行应用数据访问。
Hadoop YARN:                            作业调度和集群资源管理的框架。
Hadoop MapReduce:                       基于yarn系统的并行大数据处理技术。

进程

[hdfs]start-dfs.sh
NameNode            NN
DataNode            DN
SecondaryNamenode   2NN

[yarn]start-yarn.sh
ResourceMananger    RM
NodeManager         NM

脚本分析

    hadoop [--config confdir] COMMAND :
    这说明在执行hadoop的时候,可以带参数来执行相关的操作,比如我们有好几个版本的hadooop,那么我们在执行hadoop的时候,到底运行哪个呢?那么这样就可以执行hadoop命令时加上后面的参数来指定具体要执行那个版本的hadoop。

    例:hadoop --config /opt/hadoop/hadoop-1.2.1/

    libexec所在路径:/soft/hadoop/libexec
    libexec:服务器二进制文件

/soft/hadoop/sbin/start-all.sh   
--------------    
bin=`dirname "${BASH_SOURCE-$0}"`   //{BASH_SOURCE-$0}代表取得当前执行的shell文件所在的完整路径:/soft/hadoop/sbin/start-all.sh

    libexec/hadoop-config.sh
    hadoop/sbin/start-dfs.sh
    hadoop/sbin/start-yarn.sh

sbin/start-dfs.sh
--------------
    libexec/hadoop-config.sh
    sbin/hadoop-daemons.sh --config .. --hostname .. start namenode ...
    sbin/hadoop-daemons.sh --config .. --hostname .. start datanode ...
    sbin/hadoop-daemons.sh --config .. --hostname .. start sescondarynamenode ...
    sbin/hadoop-daemons.sh --config .. --hostname .. start zkfc ...         //


sbin/start-yarn.sh
--------------  
    libexec/yarn-config.sh
    sbin/yarn-daemon.sh --config $YARN_CONF_DIR  start resourcemanager
    sbin/yarn-daemons.sh  --config $YARN_CONF_DIR  start nodemanager


sbin/hadoop-daemons.sh
----------------------
    libexec/hadoop-config.sh

    slaves

    hadoop-daemon.sh

sbin/hadoop-daemon.sh
-----------------------
    libexec/hadoop-config.sh
    bin/hdfs ....


sbin/yarn-daemon.sh
-----------------------
    libexec/yarn-config.sh
    bin/yarn

单独启动和关闭hadoop服务

1)启动名称节点

hadoop-daemon.sh start namenode

2) 启动数据节点

1.在名称节点上进行启动用:hadoop-daemons.sh start datanode      //可启动全部数据节点
2.在数据节点上进行单个启动用:hadoop-daemon.sh start datanode     //可启动全部数据节点

3)hadoop-daemon.sh start secondarynamenode //名称节点上启用

5)开启resourcemanager

yarn-daemon.sh start resourcemanager //名称节点上启用

6)开启nodemanager //在名称节点上启用全部数据节点

bin/yarn-daemons.sh start nodemanager

7)停止一个数据节点

hadoop-daemon.sh stop datanode //在数据节点上单点启动 hadoop-daemons.sh stop datanode //在名称节点上多点启动

Usage:使用方式
bin/hadoop
------------------------
    hadoop verion       //版本
    hadoop fs           //运行一个常用的文件系统客户端.
    hadoop jar          //运行jar包
    distcp              //递归拷贝文件或目录
    hadoop classpath    //设置类路径
    hadoop checknative  //检测本地的库文件


bin/hdfs
------------------------
    dfs                     // === hadoop fs
    classpath          
    namenode -format   
    secondarynamenode  
    namenode           
    journalnode        
    zkfc               
    datanode           
    dfsadmin           
    haadmin            
    fsck               
    balancer           
    jmxget             
    mover              

    oiv                
    oiv_legacy         
    oev                
    fetchdt            
    getconf            
    groups             
    snapshotDiff       

    lsSnapshottableDir 

    portmap            
    nfs3               
    cacheadmin         
    crypto             
    storagepolicies    
    version 

hdfs常用命令

$>hdfs dfs -mkdir - p /user/centos/hadoop                 //p递归创建
$>hdfs dfs -ls -R /user/centos/hadoop                    //-R递归
$>hdfs dfs -rm -r -f /user/centos/hadoop
$>hdfs dfs --help                       //查看帮助8
$>hdfs dfs -mkdir -p /user/centos       //创建目录 -p创建父目录
$>hdfs dfs -ls -R   /                   //显式目录结构
$>hdfs dfs -lsr /                       //显式目录结构
$>hdfs dfs -put 1.txt 2.txt /user/centos//上传文件
$>hdfs dfs -get /user/centos/1.txt a.txt//上传文件

格式化文件系统

1.删除之前的本地文件
    xcall
2.删除所有日志
    xcall
3.格式化文件系统
    //仅仅是处理名称节点。
    $>hadoop namenode -format

    //生成VERSION文件
    [namenode]
        路径:file://${hadoop.tmp.dir}/dfs/name/current/VERSION
        namespaceID=1604478432
        clusterID=CID-45cc3a4c-e513-47df-a7bc-f857df6e9e04
        cTime=0
        storageType=NAME_NODE
        blockpoolID=BP-129790938-192.168.231.201-1495165777612
        layoutVersion=-63

    [datanode]
        路径:file://${hadoop.tmp.dir}/dfs/data/current/VERSION
        storageID=DS-499b01d8-0ae0-4223-9f03-a4cce085be8c
        clusterID=CID-45cc3a4c-e513-47df-a7bc-f857df6e9e04
        cTime=0
        datanodeUuid=a47b6801-83cf-46b6-8ce4-41258e2444a3
        storageType=DATA_NODE
        layoutVersion=-56


4.配置hadoop本地存放目录
    [core-site.xml]
    <property>
            <name>hadoop.tmp.dir</name>
            <value>/home/centos/hadoop/full</value>
    </property>

    namenode的本地存放目录:file://${hadoop.tmp.dir}/dfs/name
    namenode的本地存放目录:file://${hadoop.tmp.dir}/dfs/data

no route

关闭防火墙。
$>su root
$>xcall.sh "service firewalld stop"
$>xcall.sh "systemctl disable firewalld"

hdfs

500G
1024G = 2T/4T
切割。


寻址时间:10ms左右
磁盘速率 : 100M /s

64M
128M            //让寻址时间占用读取时间的1%.

1ms
1 / 100


size = 181260798
block-0 : 134217728
block-1 :  47043070 
--------------------

b0.no : 1073741829
b1.no : 1073741830

fsimage:镜像
edits:编辑日志,对hdfs的操作都记录在其中

HA

high availability,高可用性。通常用几个9衡量。
99.999%

SPOF:

single point of failure,单点故障。

secondarynamenode //仅起到备份作用

找到所有的配置文件

1.tar开hadoop-2.7.3.tar.gz
hadoop-2.7.3\share\hadoop\common\hadoop-common-2.7.3.jar\core-default.xml
hadoop-2.7.3\share\hadoop\hdfs\hadoop-hdfs-2.7.3.jar\hdfs-default.xml
hadoop-2.7.3\share\hadoop\mapreduce\hadoop-mapreduce-client-core-2.7.3.jar\mapred-default.xml
hadoop-2.7.3\share\hadoop\yarn\hadoop-yarn-common-2.7.3.jar\yarn-site.xml

本地模式

[core-site.xml]
fs.defaultFS=file:///           //默认值

配置hadoop临时目录

1.配置[core-site.xml]文件
<configuration>
        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://s201/</value>
        </property>
        <!--- 配置新的本地目录 -->
        <property>
                <name>hadoop.tmp.dir</name>
                <value>/home/centos/hadoop/full</value>
        </property>
</configuration>


//以下属性均由hadoop.tmp.dir决定,在hdfs-site.xml文件中配置。
dfs.namenode.name.dir=file://${hadoop.tmp.dir}/dfs/name
dfs.datanode.data.dir=file://${hadoop.tmp.dir}/dfs/data
dfs.datanode.data.dir=file://${hadoop.tmp.dir}/dfs/data

dfs.namenode.checkpoint.dir=file://${hadoop.tmp.dir}/dfs/namesecondary
dfs.namenode.checkpoint.dir=file://${hadoop.tmp.dir}/dfs/namesecondary


2.分发core-site.xml文件
    $>xsync core-site.xml

3.格式化文件系统,只对namenode的本地目录进行初始化。
    $>hadoop namenode -format       //hdfs namenode -format

4.启动hadoop
    $>start-dfs.sh

使用xcall.sh在所有节点上创建jps符号连接,指向/soft/jdk/bin/jps

1.切换到root用户
    $>su root
2.创建符号连接
    $>xcall.sh "ln -sfT /soft/jdk/bin/jps /usr/local/bin/jps"
3.修改jps符号连接的owner
    $>xcall.sh "chown -h centos:centos /usr/local/bin/jps"
4.查看所有主机上的java进程
    $>xcall.sh jps

在centos桌面版中安装eclipse

1.下载eclipse linux版
    eclipse-jee-mars-R-linux-gtk-x86_64.tar.gz
2.tar开到/soft下,
    $>tar -xzvf eclipse-jee-mars-R-linux-gtk-x86_64.tar.gz -C /soft
3.启动eclipse
    $>cd /soft/eclipse
    $>./eclipse &           //后台启动
4.创建桌面快捷方式
    $>ln -s /soft/eclipse/eclipse ~/Desktop/eclipse
5.

收集hadoop的所有jar包

使用hadoop客户端api访问hdfs

1.创建java项目
2.导入hadoop类库

3.tar -zxvf eclipse-jee-marks-R-linux-gtk-x86_64.tar.gz -C /soft       // C指定解压目录
4.  ./eclipse &     //&是放在后台执行
5.把hadoop/etc/log4j.properties放到java项目的src下面即可

posted on 2017-05-26 00:27  艺海浮台  阅读(3741)  评论(0编辑  收藏  举报