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下面即可
                    
                
                
            
        
浙公网安备 33010602011771号