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,以实现高可用。
一. 集群规划
192.168.77.128
192.168.77.130
192.168.77.134
二. 基础设置 1. 关闭防火墙
service iptables status #查看防火墙状态
service iptables start #立即开启防火墙,但是重启后失效。
service iptables stop #立即关闭防火墙,但是重启后失效。
chkconfig iptables on #开启防火墙,重启后生效。
chkconfig iptables off #关闭防火墙,重启后生效。
2. 修改主机名
vi /etc/sysconfig/network
hadoop000
1. hosts配置
vi /etc/hosts
192.168.77.128 hadoop000
192.168.77.130 hadoop001
192.168.77.134 hadoop002
2. 免密登陆
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安装
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安装
yum install -y ntp
ntpdate -u ntp.api.bz
5. 基础设置同步到其他节点
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)
vi /etc/sysconfig/selinux
SELINUX=disabled
7. 添加hadoop用户(optional)
useradd hadoop
passwd hadoop
三. 集群安装 1. hadoop下载解压
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的配置
vi etc/hadoop/hadoop-env.sh
JAVA_HOME=/usr/local/jdk1.8/
3. hadoop_home配置
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
vi core-site.xml
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://hadoop000:8020</value> # 指定默认的访问地址以及端口号
</property>
</configuration>
vi hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>/data/hadoop/app/tmp/dfs/name</value> # namenode临时文件所存放的目录
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/data/hadoop/app/tmp/dfs/data</value> # datanode临时文件所存放的目录
</property>
</configuration
5. 创建namenode,datanode目录
mkdir -p /data/hadoop/app/tmp/dfs/name
mkdir -p /data/hadoop/app/tmp/dfs/data
6. yarn-site.xml,mapred-site.xml
vi yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop000</value>
</property>
</configuration>
cp mapred-site.xml.template mapred-site.xml
vi mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
7. slaves配置
vi slaves
hadoop000
hadoop001
hadoop002
8. 以上同步到其他节点
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 格式化
hdfs namenode -format
2. 集群启动
start-all.sh
stop-all.sh #关闭
hdfs 启动:
namenode:
hadoop-daemon.sh start namenode
datanode:
hadoop-daemon.sh start datanode
SecondaryNameNode
hadoop-daemon.sh start secondarynamenode
yarn 启动:
resourcemanager
yarn-daemon.sh start resourcemanager
nodemanager
yarn-daemon.sh start nodemanager
3. 查看进程
jps
start-dfs.sh
start-yarn.sh
yarn-daemon.sh start resourcemanager
2. 单服务启动
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启动:
1. Resourcemanager启动
yarn-daemon.sh start resourcemanager
2. nodemanager启动
yarn-daemon.sh start nodemanager
9. 停止服务
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
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命令
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包执行:
hadoop jar ./hadoop-mapreduce-examples-2.6.0-cdh5.7.0.jar pi 3 4