Hadoop 2.x深入浅出基础课程笔记
1、什么是Hadoop?
“谁说大象不能跳舞?!
Hadoop——轻松应对海量数据存储和分析所带来的挑战!“
1)海量数据存储,HDFS 分布式文件系统
2)海量数据分析,MapReduce 并行的离线计算框架
2、Hadoop项目的四大模块
Hadoop Common: The common utilities that support the other Hadoop modules.
Hadoop Distributed File System (HDFS™): A distributed file system that provides high-throughput access to application data.
Hadoop YARN: A framework for job scheduling and cluster resource management.
Hadoop MapReduce: A YARN-based system for parallel processing of large data sets.
2.1、YARN:”云的操作系统” – Hortonworks (Hadoop 商业版本的)
给部署在YARN上的应用,分配资源。
管理资源
JOB/APPLICATION 调度
Win7 ,XP:
QQ、YY、播放器等等,分配一些资源(CPU、内存、网络IO、磁盘IO等)
2.2、技能
1)云计算,Hadoop 2.x
2)服务总线,SOA/OSB,Dubble
3)全文检索,Lucunce、Solr、Nutch
2.3、Hadoop版本:
1)以0.20.x和1.x.x 版本为主
2)0.23.x 版本为主(开始出现YARN)
3)2.x.x 版本为主
3、编译Hadoop 2.x 源码
3.1、环境:
1)Linux 64 位操作系统,没有native lib本地库
官方提供的native库是32位的(2.5之前)
CentOS 6.4 版本,VMWare 搭建的虚拟机
Secure CRT
3)虚拟机可以联网
4、HDFS和YARN运行原理
NameNode和DataNode交互方式
1.DataNode会向NameNode发送心跳信息,接受以后,将命令以心跳返回给DataNode
2.DataNode每隔一段时间就会向NameNode发送一个块报告
3.
DFSClient:分布式文件系统客户端
SecondaryNameNode:辅助NameNode工作的
如果NameNode一旦关闭,那么内存中数据就会消失,下次启动就无法获取信息,NameNode启动后,会把MetaData写在本地的文件中,称为文件系统镜像文件FSImage。客户端对整个分布式文件系统的操作会写入日志文件中edits,记录你的操作。SecondaryNameNode定期的将FSImage和edits合并成一个元数据快照
YARN框架也是主从节点的框架
Container是资源的一个单位。
App Mstr:应用主节点(QQ自带的管理者)
离线计算框架MapReduce
Map阶段并行处理输入数据
Reduce阶段对Map阶段结果进行汇总
Shuffle链接Map和Reduce两个阶段
Map Task将数据写到本地磁盘
Reduce Task将从每个Map Task上读取一份数据
仅适合离线批处理
5、伪分布式安装
软件的安装目录:
/opt/modules/
安装:
0)说明
1、系统:CentOS 6.4 64位
2、关闭防火墙和SELinux
service iptables status
service iptables stop
chkconfig iptables off
vi /etc/sysconfig/selinux
设置 SELINUX=disabled
3、设置静态IP地址
vi /etc/sysconfig/network-scripts/ifcfg-eth0
4、修改HostName
hostname hadoop-yarn.dragon.org
vi /etc/sysconfig/network
5、IP与HostName绑定
vi /etc/hosts
内容:
192.168.48.128 hadoop-yarn.dragon.org hadoop-yarn
6、安装JDK
安装目录:/opt/modules/jdk1.6.0_45
版本:jdk-6u45-linux-x64.bin
命令:
chmod u+x jdk-6u45-linux-x64.bin
./jdk-6u45-linux-x64.bin
设置环境变量:
vi /etc/profile
添加内容:
export JAVA_HOME=/opt/modules/jdk1.6.0_45
export PATH=$PATH:$JAVA_HOME/bin
生效:
# source /etc/profile
1)解压tar包
tar -zxvf hadoop-2.2.0.tar.gz -C /opt/modules/
2)安装目录
HADOOP_HOME=/opt/modules/hadoop-2.2.0
3)配置
1、hadoop-env.sh
export JAVA_HOME=/opt/modules/jdk1.6.0_45
2、yarn-env.sh(可以不用)
export JAVA_HOME=/opt/modules/jdk1.6.0_45
3、mapred-env.sh(可以不用)
export JAVA_HOME=/opt/modules/jdk1.6.0_45
4、core-site.xml
fs.default.name
hdfs://hadoop-yarn.dragon.org:8020
hadoop.tmp.dir
/opt/modules/hadoop-2.2.0/data/tmp
5、hdfs-site.xml
dfs.replication
1
dfs.namenode.name.dir
/opt/hadoop-2.2/hdfs/namenode
dfs.datanode.data.dir
/opt/hadoop-2.2/hdfs/datanode
6、yarn-site.xml
yarn.nodemanager.aux-services
mapreduce_shuffle
7、mapred-site.xml
mapreduce.framework.name
yarn
4)启动
1、启动HDFS
NameNode、DataNode、SecondaryNameNode
* NameNode 格式化
bin/hdfs namenode -format -- 产生一个Cluster ID
拓展:
* 指定Cluster ID
bin/hdfs namenode -format -clusterid yarn-cluster
* Block Pool ID
数据块池ID
* NameNode Fedaration
(启动方式一)
* 启动NameNode
sbin/hadoop-daemon.sh start namenode
* 启动DataNode
sbin/hadoop-daemon.sh start datanode
* 启动SecondaryNameNode
sbin/hadoop-daemon.sh start secondarynamenode
在浏览器中输入localhost:50070查看namenode
在浏览器中输入localhost:50090查看secondarynamenode
2、启动YARN
ResourceManager、NodeManager
* 启动ResourceManger
sbin/yarn-daemon.sh start resourcemanager
* 启动NodeManager
sbin/yarn-daemon.sh start nodemanager
在浏览器中输入localhost:8088查看YARN 的web界面
5)日志
【hadoop】-【hadoop】-【namenode】-【hadoop-yarn.dragon.org】.【log】
框架名称 用户名 服务名称 主机名 日志格式
6)HDFS 操作错误
信息:
[root@hadoop-yarn hadoop-2.2.0]# bin/hdfs dfs -mkdir /test
mkdir: Permission denied: user=root, access=WRITE, inode="/":hadoop:supergroup:drwxr-xr-x
权限设置
修改hdfs-site.xml 添加
dfs.permissions
false
注意:在root下开启的进程,在切换到其他用户下是无效的,所以要保持用户的一致性
运行在YARN上的hadoop自带的MapReduce小案例的运行:
/bin/yarn jar /opt/hadoop-2.2/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jar wordcount /Input /output
运行MapReduce时有6类计数器 counter
file system
job
mapreduce framework
shuffle errors
File input format
file output format
7)启动历史服务器
用于查看MapReduce 应用程序的历史运行情况
sbin/mr-jobhistory-daemon.sh start historyserver
netstat -tnlp|grep 19888
8)疑问:
1、没有SSH 协议配置 ?
2、启动方式 ?
sbin/start-dfs.sh
sbin/start-yarn.sh
sbin/start-all.sh
方式一:逐一启动(但是实际项目中采用此种)
hadoop-daemon.sh
yarn-daemon.sh
方式二:分开启动(推荐)
start-dfs.sh start-yarn.sh
方式三:一起启动(不推荐 来自于hadoop1的启动方式)
start-all.sh
注:hdfs 和yarn的启动分为安全模式和非安全模式
hdfs getconf -namenodes
得到namenode在哪台主机上
如果要采用第二种启动方式则要配置SSH协议
之前配置过SSH,现在需要关闭,root用户目录下.ssh文件夹。删除文件
SSH公钥加密
(1)远程主机接受到用户的请求,把自己的公钥发送给用户
(2)用户使用这个公钥,将登录密码加密后,发送回来
(3)远程主机用自己的私钥,解析登录密码,
执行命令:ssh-keygen -t rsa
[root@master ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): & 按回车默认路径 &
Created directory '/root/.ssh'. &创建/root/.ssh目录&
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
通过以上命令将在/root/.ssh/ 目录下生成id_rsa私钥和id_rsa.pub公钥。
[root@master .ssh]# cat id_rsa.pub > authorized_keys
将id_rsa.pub写入authorized_keys,配置完毕,可通过ssh 本机IP 测试是否需要密码登录:ssh localhost
3、HDFS、YARN、MAPREDUCE 默认的配置
MapReduce日志分为历史作业日志和Container日志(存放于logs/userlogs下)
1、云计算开发基础
Oracle:只能操作本地服务器,但是可以操做文件块,又称之为数据空间,可以位于不同的磁盘上,例如,安装在C盘,随着数据的增加,C盘饱满,可以放置到D盘,但是必须保证都在本地磁盘,本地机器上。
云计算:最大限度的发挥网络的资源
为什么要称之为云呢?为什么不叫互联网计算
大多数计算的网络拓扑图都是用一块云来表示互联网的,于是就有云计算的说法
云计算服务类型
1.基础设施即服务(IAAS):
提供很多计算机,存储器,I/O设备,带宽等计算机基础设备,集中起来称为一个虚拟的资源池来为整个网络提供服务。把东西放在我这边,需要时可以来这边提取。
典型代表:AppEngine(google)直接把程序部署到AppEngine上面
2.软件即服务(SAAS)
在本地通过某种方式就可以访问网络资源。
WebService:Google Earth Baidu Map
3.平台即服务(PAAS)
Hadoop,Amazon
4.管理服务提供商(MSP)
Amazon,Oracle,MicroSoft
通过把在本地开发的程序部署在AppEngine上面,来访问。了解IAAS服务
Google App Engine(GAE)提供了一个很好的Python和Java语言支持平台,可以让程序员们很容易的在Google的集群服务器上部署自己开发的各种网络应用程序
1.在Eclipse开发一个AppEngine项目
2.部署到谷歌的AppEngine.com上面,申请一个账号。
3.在AppEngine上面创建一个项目
4.将项目上传到Google的服务器上
操作步骤:
1.先从Eclipse下载eclipse安装包,版本有要求貌似4.2之后的在线安装plugin forEclipse都使用不了,选择了4.3版本,通过在eclipse的help-》Install new software ,在work with中输入URL: http://dl.google.com/eclipse/plugin/4.3 ,选择Google Plugin For Eclipse和Google App Engine java Sdk选项实现在线安装,重启之后会出现一个8字的Google图标,在eclispe中。在 Eclipse 中通过单击 New Web Application Project 按钮创建一个新项目;在显示的对话框中,不要勾选 Use Google Web Toolkit 选项。命名项目和您感兴趣的相应的包。
在层次结构中选择项目并单击 Deploy App Engine Project 按钮。
参见http://blog.zhe700.net/220.html
右键project,属性打开AppEngine,填写ApplicationId,即为之前创建project的ID
其他人的访问方式:
http://www.subtle-canto-108111.appspot.com/myproject_appengine
www.ApplicationId.appspot.com/project
lspci –vnn | grep 14e4
gedit ~/.bashrc
export JAVA_HOME
export JRE_HOME= JAVAHOMEjreexportCLASSPATH= {JAVA_HOME}/lib: JAVAHOME/libexportPATH= {JAVA_HOME}/bin:$PATH
HBase 配置
第一步:在系统环境中添加HBase
Vi /etc/profile
export HBASE_HOME=/opt/hbase-0.98.14
export JAVA_HOME=/usr/lib/jvm/jdk1.7
export HADOOP_HOME=/opt/hadoop-2.2
export JRE_HOME= JAVAHOME/jreexportCLASSPATH=.: {JAVA_HOME}/lib: JAVAHOME/libexportPATH= {JAVA_HOME}/bin: PATH: {HADOOP_HOME}/bin: HADOOPHOME/sbin: {HBASE_HOME}/bin
第二步:打开HBase的安装目录,修改配置文件,在conf目录下
第一个文件 Hbase-site.xml:
hbase.tmp.dir
/var/hbase
hbase.rootdir
hdfs://localhost:9000/hbase
注意:这里的value值必须与Hadoop的core-site.xml的
hdfs://hadoop-yarn.dragon.org:8020一致
hbase.cluster.distributed
true
第二个文件 Hbase-site.xml:
export JAVA_HOME=/usr/lib/jvm/jdk1.7
export HBASE_CLASSPATH=/opt/hadoop-2.2
export HBASE_LOG_DIR=/opt/hbase-0.98.14/logs
export HBASE_MANAGES_ZK=true
hbase的运行需要用到zookeeper,而hbase-0.98.*自带了zookeeper,所以可以使用hbase自带的zookeeper,在conf/hbase-env.sh 文件中 export HBASE_MANAGES_ZK=true ,true表示使用hbase自带的zookeeper,如果不想使用其自带的zookeeper,自己下载包安装的化,该项设置为false。当然如果自己安装zookeeper,启动及关闭先后顺序为:启动Hadoop—>启动ZooKeeper集群—>启动HBase—>停止HBase—>停止ZooKeeper集群—>停止Hadoop
Hbase的启动(在自带zookeeper的情况下)
在启动完hadoop后
bin/start-hbase.sh
bin/hbase shell