Hadoop各个功能模块的理解
零. 概述
HDFS模块
HDFS负责大数据的存储,通过将大文件分块后进行分布式存储方式,突破了服务器硬盘大小的限制,解决了单台机器无法存储大文件的问题,HDFS是个相对独立的模块,可以为YARN提供服务,也可以为HBase等其他模块提供服务。
YARN模块
YARN是一个通用的资源协同和任务调度框架,是为了解决Hadoop1.x中MapReduce里NameNode负载太大和其他问题而创建的一个框架。YARN是个通用框架,不止可以运行MapReduce,还可以运行Spark、Storm等其他计算框架。
MapReduce模块
MapReduce是一个计算框架,它给出了一种数据处理的方式,即通过Map阶段、Reduce阶段来分布式地流式处理数据。它只适用于大数据的离线处理,对实时性要求很高的应用不适用。
Hadoop本地模式安装/Hadoop伪分布式模式安装/完全分布式安装
Hadoop本地模式安装,只适用与用于本地开发调试,或者快速安装体验Hadoop,这部分做简单的介绍。
Hadoop伪分布式模式安装,学习Hadoop一般是在伪分布式模式下进行。这种模式是在一台机器上各个进程上运行Hadoop的各个模块,伪分布式的意思是虽然各个模块是在各个进程上分开运行的,但是只是运行在一个操作系统上的,并不是真正的分布式。
完全分布式安装才是生产环境采用的模式,Hadoop运行在服务器集群上,生产环境一般都会做HA,以实现高可用。
一. 集群规划
代码语言:javascript复制 192.168.77.128
192.168.77.130
192.168.77.134二. 基础设置
1. 关闭防火墙
代码语言:javascript复制service iptables status #查看防火墙状态
service iptables start #立即开启防火墙,但是重启后失效。
service iptables stop #立即关闭防火墙,但是重启后失效。
chkconfig iptables on #开启防火墙,重启后生效。
chkconfig iptables off #关闭防火墙,重启后生效。 2. 修改主机名
代码语言:javascript复制vi /etc/sysconfig/network
hadoop000 1. hosts配置
代码语言:javascript复制vi /etc/hosts
192.168.77.128 hadoop000
192.168.77.130 hadoop001
192.168.77.134 hadoop002 2. 免密登陆
代码语言:javascript复制ssh-keygen -t rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop000
ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop001
ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop002 3. jdk安装
代码语言:javascript复制tar -zxvf jdk-8u151-linux-x64.tar.gz
mv ./jdk1.8.0_151 /usr/local/jdk1.8
vi /etc/profile
JAVA_HOME=/usr/local/jdk1.8/
JAVA_BIN=/usr/local/jdk1.8/bin
JRE_HOME=/usr/local/jdk1.8/jre
PATH=$PATH:/usr/local/jdk1.8/bin:/usr/local/jdk1.8/jre/bin
CLASSPATH=/usr/local/jdk1.8/jre/lib:/usr/local/jdk1.8/lib:/usr/local/jdk1.8/jre/lib/charsets.jar
export PATH=$PATH:/usr/local/mysql/bin/
source /etc/profile
java -version 4. ntp安装
代码语言:javascript复制yum install -y ntp
ntpdate -u ntp.api.bz 5. 基础设置同步到其他节点
代码语言:javascript复制rsync -av /usr/local/jdk1.8 hadoop001:/usr/local
rsync -av /usr/local/jdk1.8 hadoop002:/usr/local
rsync -av /etc/profile hadoop001:/etc/profile
rsync -av /etc/profile hadoop002:/etc/profile 6. 禁用 selinux(optional)
代码语言:javascript复制vi /etc/sysconfig/selinux
SELINUX=disabled 7. 添加hadoop用户(optional)
代码语言:javascript复制useradd hadoop
passwd hadoop
三. 集群安装
1. hadoop下载解压
代码语言:javascript复制wget http://archive.cloudera.com/cdh5/cdh/5/hadoop-2.6.0-cdh5.7.0.tar.gz
tar -zxvf hadoop-2.6.0-cdh5.7.0.tar.gz -C /usr/local/ 2. hadoop 中hadoop-env.sh 配置java_home的配置
代码语言:javascript复制 vi etc/hadoop/hadoop-env.sh
JAVA_HOME=/usr/local/jdk1.8/ 3. hadoop_home配置
代码语言:javascript复制 vim ~/.bash_profile
export HADOOP_HOME=/usr/local/hadoop-2.6.0-cdh5.7.0/
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
source ~/.bash_profile 4. core-site.xml,hdfs-site.xml
代码语言:javascript复制vi core-site.xml
代码语言:javascript复制vi hdfs-site.xml
代码语言:javascript复制mkdir -p /data/hadoop/app/tmp/dfs/name
mkdir -p /data/hadoop/app/tmp/dfs/data 6. yarn-site.xml,mapred-site.xml
代码语言:javascript复制vi yarn-site.xml
代码语言:javascript复制 cp mapred-site.xml.template mapred-site.xml代码语言:javascript复制vi mapred-site.xml
7. slaves配置
代码语言:javascript复制vi slaves
hadoop000
hadoop001
hadoop002 8. 以上同步到其他节点
代码语言:javascript复制 rsync -av /usr/local/hadoop-2.6.0-cdh5.7.0/ hadoop001:/usr/local/hadoop-2.6.0-cdh5.7.0/
rsync -av /usr/local/hadoop-2.6.0-cdh5.7.0/ hadoop002:/usr/local/hadoop-2.6.0-cdh5.7.0/
rsync -av ~/.bash_profile hadoop001:~/.bash_profile
rsync -av ~/.bash_profile hadoop002:~/.bash_profile
source .bash_profile
mkdir -p /data/hadoop/app/tmp/dfs/name
mkdir -p /data/hadoop/app/tmp/dfs/data
source .bash_profile
mkdir -p /data/hadoop/app/tmp/dfs/name
mkdir -p /data/hadoop/app/tmp/dfs/data四. 集群运行
单服务启动和集群启动,俩者二选一
1. 集群启动
1. 在hadoop000上执行 namenode 格式化
代码语言:javascript复制hdfs namenode -format 2. 集群启动
代码语言:javascript复制start-all.sh
stop-all.sh #关闭 hdfs 启动:
代码语言:javascript复制namenode:
hadoop-daemon.sh start namenode
datanode:
hadoop-daemon.sh start datanode
SecondaryNameNode
hadoop-daemon.sh start secondarynamenode yarn 启动:
代码语言:javascript复制resourcemanager
yarn-daemon.sh start resourcemanager
nodemanager
yarn-daemon.sh start nodemanager 3. 查看进程
代码语言:javascript复制jps
start-dfs.sh
start-yarn.sh
yarn-daemon.sh start resourcemanager 2. 单服务启动
代码语言:javascript复制1. zk启动
./zkServer.sh start
2. jn启动
sbin/hadoop-daemons.sh start journalnode
3. zkfc格式化
hdfs zkfc -formatZK
4. namenode 格式化
hdfs namenode -format
5. namenode启动
hadoop-daemon.sh start namenode
5.1 启动standby namenode
hdfs namenode -bootstrapStandby #把NameNode的数据同步到hadoop02上
hadoop-daemon.sh start namenode #启动备用的namenode
6. datanode启动
hadoop-daemons.sh start datanode
7. yarn启动
start-yarn.sh
8. ZKFC启动
hadoop01:
hadoop-daemon.sh start zkfc
hadoop02
hadoop-daemon.sh start zkfc 8. yarn启动:
代码语言:javascript复制1. Resourcemanager启动
yarn-daemon.sh start resourcemanager
2. nodemanager启动
yarn-daemon.sh start nodemanager 9. 停止服务
代码语言:javascript复制1. sbin/hadoop-daemon.sh stop namenode
2. sbin/hadoop-daemon.sh stop datanode
3. sbin/yarn-daemon.sh stop resourcemanager
4. sbin/yarn-daemon.sh stop nodemanager代码语言:javascript复制yarn:
sbin/stop-yarn.sh
sbin/start-yarn.sh 3. hadoop访问:192.168.77.128:50070
4. yarn访问:192.168.77.128:8088
高可用:
六. 高可用需要配置zk
3. zk集群搭建
4. core-site.xml 补充配置 zk信息
七. 本地模式部署
1. 下载解压
2. /etc/profile配置java_home,
3. conf/hadoop-env.sh 配置java_home
4. 启动
五. hdfs命令
代码语言:javascript复制 1. hdfs dfs -ls /
2. hdfs dfs -mkdir /data
3. hdfs dfs -put ./test.sh /data
4. hdfs dfs -text /browserout/part-r-00000
5. hdfs dfs -cat /demo1/core-site.xml
6. hdfs dfs -get /demo1/core-site.xml
hadoop fs -get /user/trunk/test.txt . (复制到本地当前目录下)
hadoop fs -cat /user/trunk/test.txt
hadoop fs -tail /user/trunk/test.txt (查看最后1000字节)
hadoop fs -rm /user/trunk/test.txt
hadoop fs -rmdir /user/trunk
hadoop fs -help ls (查看ls命令的帮助文档) 4. jar包执行:
代码语言:javascript复制hadoop jar ./hadoop-mapreduce-examples-2.6.0-cdh5.7.0.jar pi 3 4