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.3sharehadoopcommonhadoop-common-2.7.3.jarcore-default.xml
hadoop-2.7.3sharehadoophdfshadoop-hdfs-2.7.3.jarhdfs-default.xml
hadoop-2.7.3sharehadoopmapreducehadoop-mapreduce-client-core-2.7.3.jarmapred-default.xml
hadoop-2.7.3sharehadoopyarnhadoop-yarn-common-2.7.3.jaryarn-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下面即可