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
     hadoop0001. hosts配置
vi /etc/hosts
    192.168.77.128 hadoop000
    192.168.77.130 hadoop001
    192.168.77.134 hadoop0022. 免密登陆
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 hadoop0023. 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 -version4. ntp安装
yum install -y ntp
ntpdate -u ntp.api.bz5. 基础设置同步到其他节点
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/profile6. 禁用 selinux(optional)
vi /etc/sysconfig/selinux
   SELINUX=disabled7. 添加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_profile4. 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>
   </configuration5. 创建namenode,datanode目录
mkdir -p /data/hadoop/app/tmp/dfs/name
mkdir -p /data/hadoop/app/tmp/dfs/data6. 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.xmlvi mapred-site.xml
   <configuration>
       <property>
           <name>mapreduce.framework.name</name>
           <value>yarn</value>
       </property>
   </configuration>7. slaves配置
vi slaves
    hadoop000
    hadoop001
    hadoop0028. 以上同步到其他节点
 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 -format2. 集群启动
start-all.sh             
stop-all.sh        #关闭hdfs 启动:
namenode:
    hadoop-daemon.sh start namenode
datanode:
    hadoop-daemon.sh start datanode
SecondaryNameNode
    hadoop-daemon.sh start secondarynamenodeyarn 启动:
resourcemanager
    yarn-daemon.sh start resourcemanager
nodemanager
    yarn-daemon.sh start nodemanager3. 查看进程
jps           
start-dfs.sh
start-yarn.sh
yarn-daemon.sh start resourcemanager2. 单服务启动
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 zkfc8. yarn启动:
1. Resourcemanager启动
   yarn-daemon.sh start resourcemanager
2. nodemanager启动
   yarn-daemon.sh start nodemanager9. 停止服务
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 nodemanageryarn:
   sbin/stop-yarn.sh
   sbin/start-yarn.sh3. 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