HDFS(Hadoop Distributed File System)架构概述node
NameNode目录--主刀医生(nn); DataNode(dn)数据; Secondary NameCode(2nn)助手;linux
YARN框架 常驻 + 临时web
ResourceManager(RM) 组长;数据库
NodeManager 组员;vim
Client客户;Job Submission来任务了 ---->> ApplicationMaster,任务结束它就卸任了; windows
ApplicationMaster(AM)临时项目任务负责人,由RM任命监视等;安全
容器Container:底层没有虚拟,只虚拟了应用层,但仍能够隔离cup和内存;(与虚拟机的区别);能够在一个机器里开3个容器(都要是同样的如3个window,由于系统底层没变;)
占cpu内存用来运行任务如APP Mster;
MapReduce架构概述 计算引擎bash
大数据生态体系服务器
查看Hadoop目录结构 [kris@hadoop101 hadoop-2.7.2]$ ll 总用量 52 drwxr-xr-x. 2 kris kris 4096 5月 22 2017 bin drwxr-xr-x. 3 kris kris 4096 5月 22 2017 etc drwxr-xr-x. 2 kris kris 4096 5月 22 2017 include drwxr-xr-x. 3 kris kris 4096 5月 22 2017 lib drwxr-xr-x. 2 kris kris 4096 5月 22 2017 libexec -rw-r--r--. 1 kris kris 15429 5月 22 2017 LICENSE.txt -rw-r--r--. 1 kris kris 101 5月 22 2017 NOTICE.txt -rw-r--r--. 1 kris kris 1366 5月 22 2017 README.txt drwxr-xr-x. 2 kris kris 4096 5月 22 2017 sbin drwxr-xr-x. 4 kris kris 4096 5月 22 2017 share 重要目录 (1)bin目录:存放对Hadoop相关服务(HDFS,YARN)进行操做的脚本 (2)etc目录:Hadoop的配置文件目录,存放Hadoop的配置文件 (3)lib目录:存放Hadoop的本地库(对数据进行压缩解压缩功能) (4)sbin目录:存放启动或中止Hadoop相关服务的脚本 (5)share目录:存放Hadoop的依赖jar包、文档、和官方案例
内存4G,硬盘50G 1. 安装好linux /boot 200M /swap 2g / 剩余 2. *安装VMTools 3. 关闭防火墙 sudo service iptables stop sudo chkconfig iptables off 4. 设置静态IP,改主机名 改ip: 编辑vim /etc/sysconfig/network-scripts/ifcfg-eth0 改为 DEVICE=eth0 TYPE=Ethernet ONBOOT=yes BOOTPROTO=static NAME="eth0" IPADDR=192.168.1.101 PREFIX=24 GATEWAY=192.168.1.2 DNS1=192.168.1.2 改用户名: 编辑vim /etc/sysconfig/network 改HOSTNAME=那一行 NETWORKING=yes HOSTNAME=hadoop101 5. 配置/etc/hosts vim /etc/hosts 192.168.1.100 hadoop100 192.168.1.101 hadoop101 192.168.1.102 hadoop102 192.168.1.103 hadoop103 192.168.1.104 hadoop104 192.168.1.105 hadoop105 192.168.1.106 hadoop106 192.168.1.107 hadoop107 192.168.1.108 hadoop108 192.168.1.109 hadoop109 6. 建立一个通常用户kris,给他配置密码 useradd kris passwd kris 7. 配置这个用户为sudoers vim /etc/sudoers 在root ALL=(ALL) ALL 添加kris ALL=(ALL) NOPASSWD:ALL 保存时wq!强制保存 8. *在/opt目录下建立两个文件夹module和software,并把全部权赋给kris mkdir /opt/module /opt/software chown kris:kris /opt/module /opt/software 9. 关机,快照,克隆 从这里开始要以通常用户登录 10. 克隆的虚拟机;改物理地址 [root@hadoop101 桌面]# vim /etc/udev/rules.d/70-persistent-net.rules SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:5f:8e:d9", ATTR{type}=="1", KERNEL=="eth*",
NAME="eth0" 11. 搞一个分发脚本 cd ~ vim xsync 内容以下: #!/bin/bash #xxx /opt/module if (($#<1)) then echo '参数不足' exit fi fl=$(basename $1) pdir=$(cd -P $(dirname $1); pwd) for host in hadoop102 hadoop103 do rsync -av $pdir/$fl $host:$pdir done 修改文件权限,复制移动到/home/kris/bin目录下 chmod +x xsync12. 配置免密登录 1. 生成密钥对
[kris@hadoop101 ~]$ cd .ssh
[kris@hadoop101 .ssh]$ ssh-keygen -t rsa架构
ssh-keygen -t rsa 三次回车 2. 发送公钥到本机 ssh-copy-id hadoop101 输入一次密码 3. 分别ssh登录一下全部虚拟机 ssh hadoop102 exit ssh hadoop103 exit 4. 把/home/kris/.ssh 文件夹发送到集群全部服务器 xsync /home/kris/.ssh ##发送.ssh/是不会成功的;不要加最后的/ 13. 在一台机器上安装Java和Hadoop,并配置环境变量,并分发到集群其余机器 拷贝文件到/opt/software,两个tar包 sudo vim /etc/profile 配置环境变量; 在文件末尾添加 #JAVA_HOME export JAVA_HOME=/opt/module/jdk1.8.0_144 export PATH=$PATH:$JAVA_HOME/bin #HADOOP_HOME export HADOOP_HOME=/opt/module/hadoop-2.7.2 export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin 保存 5. source /etc/profile
6. 将配置文件分发到其余集群中:
[kris@hadoop101 module]$ sudo xsync /etc/profile
sudo:xsync:找不到命令
[kris@hadoop101 module]$ sudo scp /etc/profile root@hadoop102:/etc/profile
[kris@hadoop101 module]$ sudo scp /etc/profile root@hadoop103:/etc/profile
在hadoop102/hadoop103各执行 source/etc/profile
7. 在其余机器分别执行source /etc/profile
###全部配置文件都在$HADOOP_HOME/etc/hadoop 14. 首先配置hadoop-env.sh,yarn-env.sh,mapred-env.sh文件,配置Java_HOME 在每一个文件第二行添加 export JAVA_HOME=/opt/module/jdk1.8.0_144 15. 配置Core-site.xml <!-- 指定HDFS中NameNode的地址 --> <property> <name>fs.defaultFS</name> <value>hdfs://hadoop101:9000</value> </property> <!-- 指定Hadoop运行时产生文件的存储目录 --> <property> <name>hadoop.tmp.dir</name> <value>/opt/module/hadoop-2.7.2/data/tmp</value> </property> 16. 配置hdfs-site.xml <!-- 数据的副本数量 --> <property> <name>dfs.replication</name> <value>3</value> </property> <!-- 指定Hadoop辅助名称节点主机配置 --> <property> <name>dfs.namenode.secondary.http-address</name> <value>hadoop103:50090</value> </property> 17. 配置yarn-site.xml <!-- Site specific YARN configuration properties --> <!-- Reducer获取数据的方式 --> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <!-- 指定YARN的ResourceManager的地址 --> <property> <name>yarn.resourcemanager.hostname</name> <value>hadoop102</value> </property> <!-- 日志汇集功能使能 --> <property> <name>yarn.log-aggregation-enable</name> <value>true</value> </property> <!-- 日志保留时间设置7天 --> <property> <name>yarn.log-aggregation.retain-seconds</name> <value>604800</value> </property> 18. 配置mapred-site.xml <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <!-- 历史服务器端地址 --> <property> <name>mapreduce.jobhistory.address</name> <value>hadoop103:10020</value> </property> <!-- 历史服务器web端地址 --> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>hadoop103:19888</value> </property> 启动历史服务器:mr-jobhistory-daemon.sh start historyserver
19. 配置slaves;配置时多一个空格/空行都不能够; hadoop101 hadoop102 hadoop103 20. 分发配置文件 xsync /opt/module/hadoop-2.7.2/etc
21. 格式化Namenode 在hadoop102 在hadoop101上启动 hdfs namenode -format 22. 启动hdfs 在hadoop101上启动 start-dfs.sh 23. 在配置了Resourcemanager机器上执行 在Hadoop102上启动start-yarn.sh
25 关 stop-dfs.sh stop-yarn.sh
mr-jobhistory-daemon.sh stop historyserver
Hadoop运行模式包括:本地模式、伪分布式模式以及彻底分布式模式。
本地式
可运行的程序只有MapReduce(程序);而yarn(内存和cup),HDFS(硬盘)是给MapReduce提供运行的环境;
本地式用的不是hdfs,而是本地的硬盘;而调度的资源也不是来自yarn而是本地的操做系统;
.xml文件就是输入;grep是执行jar包的哪一个主类,一个jar包能够有多个主类和主方法;输入文件夹--输出文件夹(起始没有这个文件夹,不然会报错)--' 模板正则等 '
wordcount是一个主类
伪分布式:一台电脑搭出一个集群;HDFS分3个组建NameNode、DataNode、Secondary NameNode; yarn是分4个组建,实际只搭2个ResourceManage和NodeManager,
既是NameNode也是DataNode;既是ResourceManager也是NodeManager,这些进程都跑在一台机器上;
###全部配置文件都在$HADOOP_HOME/etc/hadoop
hadoop-env.sh、mapred-env.sh、yarn-env.sh三个文件中配置:JAVA_HOME
在每一个文件第二行添加 export JAVA_HOME=/opt/module/jdk1.8.0_144
core-site.xml 指定HDFS中NameNode的地址;指定Hadoop运行时产生文件的存储目录 hdfs-site.xml 指定HDFS数据的副本数量 为3,就3台机器; 这些副本确定分布在不一样的服务器上;指定hadoop辅助名称节点(secondaryNameNode)主机配置; mapred-site.xml 指定历史服务器地址;历史服务器web端地址; 指定MR运行在YARN上; yarn-site.xml Reducer获取数据的方式;指定YARN的ResourceManager的地址(服务器);日志的配置 hdfs namenode -format 格式化HDFS,在hadoop101上; 首次启动格式化 hadoop-daemon.sh start namenode 单独启动NameNode hadoop-daemon.sh start datanode 单独启动DataNode
start-dfs.sh 启动hdfs
start-yarn.sh 启动yarn
启动前必须保证NameNode和DataNode已经启动 启动ResourceManager; 启动NodeManager hadoop fs -put wcinput/ / 往集群的跟目录中上传一个wcinput文件 158 hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /wcinput /output
[kris@hadoop100 hadoop-2.7.2]$ dirname /opt/module/hadoop-2.7.2/ /opt/module [kris@hadoop100 hadoop-2.7.2]$ dirname hadoop-2.7.2 . [kris@hadoop100 hadoop-2.7.2]$ cd -P . [kris@hadoop100 hadoop-2.7.2]$ pwd /opt/module/hadoop-2.7.2 遍历全部的主机名 ##########集群分发脚本 #!/bin/bash #xxx /opt/module if (($#<1)) then echo '参数不足' exit fi fl=$(basename $1) #文件名 basename /opt/module/hadoop-2.7.2/-->>hadoop-2.7.2 pdir=$(cd -P $(dirname $1); pwd) 父目录 dirname /opt/module/hadoop-2.7.2/ --->> /opt/module for host in hadoop102 hadoop103 hadoop104 do rsync -av $pdir/$fl $host:$pdir done
[atguigu@hadoop101 /]$ scp -r /opt/module root@hadoop102:/opt/module //-r是递归; 要拷贝的-->目的地
[atguigu@hadoop103 opt]$ scp -r atguigu@hadoop101:/opt/module root@hadoop104:/opt/module //可在不一样服务之间传输;
[atguigu@hadoop101 opt]$ rsync -av /opt/software/ hadoop102:/opt/software //rsync只能从本机到其余 ;-a归档拷贝、-v显示复制过程
用scp发送 scp -r hadoop100:/opt/module/jdk1.8.0_144 hadoop102:/opt/module/ 用rsync发送 [kris@hadoop100 module]$ rsync -av hadoop-2.7.2/ hadoop102:/opt/module/ 把当前目录下的全发过去了;-a归档拷贝、-v显示复制过程; [kris@hadoop102 module]$ ls bin include jdk1.8.0_144 libexec NOTICE.txt README.txt share etc input lib LICENSE.txt output sbin wcinput [kris@hadoop102 module]$ ls | grep -v jdk 过滤删除只剩jdk的 [kris@hadoop102 module]$ ls | grep -v jdk | xargs rm -rf
[kris@hadoop100 module]$ ll 总用量 12 drwxr-xr-x. 12 kris kris 4096 1月 15 14:55 hadoop-2.7.2 drwxr-xr-x. 8 kris kris 4096 7月 22 2017 jdk1.8.0_144 -rw-rw-r--. 1 kris kris 223 1月 15 17:13 xsync [kris@hadoop100 module]$ chmod +x xsync [kris@hadoop100 module]$ ll 总用量 12 drwxr-xr-x. 12 kris kris 4096 1月 15 14:55 hadoop-2.7.2 drwxr-xr-x. 8 kris kris 4096 7月 22 2017 jdk1.8.0_144 -rwxrwxr-x. 1 kris kris 223 1月 15 17:13 xsync [kris@hadoop100 module]$ [kris@hadoop100 module]$ ./xsync /opt/module/jdk1.8.0_144
注意:拷贝过来的/opt/module目录,别忘了在hadoop10一、hadoop10二、hadoop103上修改全部文件的,全部者和全部者组。sudo chown kris:kris -R /opt/module
拷贝过来的配置文件别忘了source一下/etc/profile 。
[kris@hadoop100 module]$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/kris/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/kris/.ssh/id_rsa. Your public key has been saved in /home/kris/.ssh/id_rsa.pub. The key fingerprint is: fd:15:a4:68:6e:88:c3:a1:f4:64:1b:aa:95:12:02:4a kris@hadoop100 The key's randomart image is: +--[ RSA 2048]----+ |.E . | |+ . o | |o . . = o . . | | . o O = = . | | . = * S + . | | + . . . . | | . . | | | | | +-----------------+ [kris@hadoop100 module]$ ssh-copy-id hadoop100 #给本身也发一份 [kris@hadoop100 module]$ ssh-copy-id hadoop101 [kris@hadoop100 module]$ ssh-copy-id hadoop102 [kris@hadoop100 module]$ ssh-copy-id hadoop103 [kris@hadoop100 module]$ ssh-copy-id hadoop104
100给100、10一、10二、10三、104都赋权了;100<==>100双向通道已经创建,我能到本身了;能够把这个双向通道copy给其余的;
[kris@hadoop100 .ssh]$ ll
总用量 16
-rw-------. 1 kris kris 396 1月 15 18:45 authorized_keys 把公钥放在已受权的keys里边,它跟公钥里边内容是同样的;
-rw-------. 1 kris kris 1675 1月 15 18:01 id_rsa 秘钥
-rw-r--r--. 1 kris kris 396 1月 15 18:01 id_rsa.pub 公钥
-rw-r--r--. 1 kris kris 2025 1月 15 17:37 known_hosts
[kris@hadoop102 .ssh]$ ll 总用量 4 -rw-------. 1 kris kris 396 1月 15 18:04 authorized_keys [kris@hadoop100 module]$ ./xsync /home/kris/.ssh #给其余帐户发送.ssh ;发送 .ssh/ sending incremental file list .ssh/ .ssh/id_rsa .ssh/id_rsa.pub .ssh/known_hosts sent 4334 bytes received 73 bytes 8814.00 bytes/sec total size is 4096 speedup is 0.93 sudo cp xsync /bin #copy到bin目录,就可全局使用; [kris@hadoop100 module]$ xsync /opt/module/hadoop-2.7.2/
清理数据(每一台): [kris@hadoop100 ~]$ cd $HADOOP_HOME [kris@hadoop100 hadoop-2.7.2]$ rm -rf data logs 101 102 103 NameNode ResourceManager SecondaryNameNode DataNode DataNode DataNode NodeManager NodeManager NodeManager pwd $JAVA_HOME $HADOOP_HOME/etc/hadoop (对mapred-site.xml.template从新命名为) mapred-site.xml 配置hadoop-env.sh,yarn-env.sh,mapred-env.sh文件,配置Java_HOME 配置Core-site.xml--->>指定HDFS中NameNode的地址 hdfs://hadoop101:9000 ; 指定Hadoop运行时产生文件的存储目录 /opt/module/hadoop-2.7.2/data/tmp 配置hdfs-site.xml-->>数据的副本数量 ; 指定Hadoop辅助名称节点主机配置 hadoop103:50090 配置yarn-site.xml-->>Reducer获取数据的方式 指定YARN的ResourceManager的地址:hadoop102; 日志汇集功能使能; 日志保留时间设置7天 配置mapred-site.xml-->>历史服务器端地址:adoop103:10020 ;历史服务器web端地址:hadoop103:19888 配置Slaves hadoop101 hadoop102 hadoop103 格式化建立namenode hdfs namenode -format 在101上启动HDFS: start-dfs.sh (101namenode) 在Hadoop102上启动 start-yarn.sh 关闭: [kris@hadoop101 hadoop-2.7.2]$ stop-dfs.sh Stopping namenodes on [hadoop101] hadoop101: stopping namenode hadoop101: stopping datanode hadoop102: stopping datanode hadoop103: stopping datanode Stopping secondary namenodes [hadoop103] hadoop103: stopping secondarynamenode [kris@hadoop102 hadoop-2.7.2]$ stop-yarn.sh stopping yarn daemons stopping resourcemanager hadoop102: stopping nodemanager hadoop103: stopping nodemanager hadoop101: stopping nodemanager no proxyserver to stop jpsall脚本: #!/bin/bash for i in hadoop101 hadoop102 hadoop103 do echo "-------$i-------" ssh $i "source /etc/profile && jps" | grep -v jps done
Windows中hosts的配置:
在windows系统中,HOST文件位于系统盘C:\Windows\System32\drivers\etc中
Hosts是一个没有扩展名的系统文件,其做用就是将一些经常使用的网址域名与其对应的IP地址创建一个关联“数据库”。
hosts文件能加快域名解析,对于要常常访问的网站,咱们能够经过在Hosts中配置域名和IP的映射关系,提升域名解析速度。
hosts文件能够方便局域网用户在不少单位的局域网中,能够分别给这些服务器取个容易记住的名字,而后在Hosts中创建IP映射,这样之后访问的时候,只要输入这个服务器的名字就好了。
hosts文件能够屏蔽一些网站,对于本身想屏蔽的一些网站咱们能够利用Hosts把该网站的域名映射到一个错误的IP或本地计算机的IP,这样就不用访问了。
根据这个HOSTS文件的做用看的出来 ,若是是别有用心的病毒把你的HOSTS文件修改了!(例如把一个正规的网站改为一个有病毒的网站的IP)。那么你就会打开一个带有病毒的网站,你可想而知你的后果了吧!
查看Windows IP 配置
C:\Users\Administrator>ipconfig /displaydns
修改hosts后生效的方法:Windows 开始 -> 运行 -> 输入cmd -> 在CMD窗口输入 ipconfig /flushdns
Linux 终端输入: sudo rcnscd restart
host中的配置没有被识别到,那么是不是由于字符或者换行等缘由呢?因而:
查看了host文件的字符:
发现其结尾是CR而没有LF,这不符合windows下面的换行风格,因此将其风格进行转换。notepad中转换方式:
转换风格以后:
至此,能够实现对该域名的ip配置。此外还须要注意:ip地址与域名间至少要有一空格,另外在最后一行书写映射时必定要加上回车再保存以免最后一行不生效。
1)dfs.namenode.http-address:50070
2)SecondaryNameNode辅助名称节点端口号:50090
3)dfs.datanode.address:50010
4)fs.defaultFS:8020 或者9000
5)yarn.resourcemanager.webapp.address:8088