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