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下面即可


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM