Hadoop的三种安装模式
一、本地模式
本地模式的特点:没有HDFS, 只能测试MapRduce (不是运行在Yarn中, 做一个独立的Java程序来运行), 只需配置etc/hadoop/hadoop-env.sh中的JAVA_HOME
运行官方的单词计数例子测试,命令如下
[root@hadoopmaster hadoop-2.6.5]# hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.5.jar wordcount input output
input是文件输入的文件夹,output是结果输出文件夹
需要注意的是output文件夹不能存在,存在就会报错
二、伪分布模式
伪分布模式的特点:在单机上,模拟一个分布式的环境,具备Hadoop的所有功能,只需要一台机器(主机名为bigdata111)
HDFS:NameNode + DataNode + SecondaryNameNode
Yarn:ResourceManager + NodeManager
1. hadoop-env.sh ,hadoop环境配置文件;
将第25行的JAVA_HOME设置为/root/training/jdk1.8.0_144;
2. hdfs-site.xml,设置数据块的冗余度;
原则上冗余度跟数据节点个数保持一致,最大不要超过3;
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
3. core-site.xml,配置主节点的地址端口和数据块及元信息;
<property>
<name>fs.defaultFS</name>
<!--hdfs://主机名:端口-->
<value>hdfs://bigdata111:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<!--存放数据块和元信息的目录-->
<value>/root/training/hadoop-2.7.3/tmp</value>
</property>
4. mapred-site.xml(默认没有该文件),配置MR程序运行的容器;
//使用cp mapred-site.xml.template mapred-site.xml生成xml文件
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
5. yarn-site.xml(默认没有该文件),配置Yarn主节点的位置和从节点的工作方式;
<property>
<name>yarn.resourcemanager.hostname</name>
<value>bigdata111</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
6. 对HDFS的NameNode进行格式化;
进入目录:/root/training/hadoop-2.7.3/tmp
执行命令:hdfs namenode -format
格式化成功的话,日志中出现Storage directory /root/training/hadoop-2.7.3/tmp/dfs/name has been successfully formatted.
7. 配置免密码登录。
在root目录下,执行
生成秘钥对命令ssh-keygen -t rsa
将公钥拷给别人ssh-copy-id -i .ssh/id_rsa.pub root@bigdata111(root@主机名)
输入名ssh bigdata111验证是否可登录bigdata111,退出命令exit
8. 启动;
启动namenode: hadoop-daemon.sh start namenode
启动datanode: hadoop-daemon.sh start datanode
只要配置hadoop根目录的etc/hadoop/slaves文件中加入datanode的主机名就可以使用start-dfs.sh一起启动namenode和datanode
启动HDFS:start-dfs.sh
启动Yarn: start-yarn.sh
统一 启动hdfs和yarn:start-all.sh
统一 关闭hdfs和yarn:stop-all.sh
输入命令jps,查看NameNode,SecondaryNameNode,DataNode,ResourceManager,NodeManager五个线程是否都起来
9. 运行wordcount程序
本地文件data.xml上传的hdfs
hdfs dfs -put data.txt /input/
进入目录root/training/hadoop-2.7.3/share/hadoop/mapreduce
执行hadoop jar hadoop-mapreduce-examples-2.7.3.jar wordcount /input/data.txt /output/day1230/,运行该命令时day1230文件不存在
查看hdfs dfs -cat /output/day1230/part-r-00000
参考 https://blog.csdn.net/baidu_28997655/article/details/81586418
三、全分布模式
全分布模式用于生产,至少需要三台机器,其中一台为为主节点,配置NameNode,SecondaryNameNode,ResourceManager,另外两台配置DataNode,NodeManager
1. 准备工作:
(1) 虚拟机安装三台Linux,配置三台均配置JDK,关闭防火墙命令
关闭systemctl stop firewalld.service
开机不启动systemctl disable firewalled.service
(2) 设置三台机IP和对应的主机名
vi /etc/hosts
IP2 bigdata112 (主节点)
IP3 bigdata113
IP4 bigdata114
(3) 设置三台机的免密登录
生成秘钥对 ssh-keygen -t rsa
拷贝秘钥
ssh-copy-id -i .ssh/id_rsa.pub root@bigdata112
ssh-copy-id -i .ssh/id_rsa.pub root@bigdata113
ssh-copy-id -i .ssh/id_rsa.pub root@bigdata114
(4)保证集群的时间同步
**三台机器同时输入date -s 2018-12-30**
2. 在主节点上(bigdata112)安装配置hadoop
(1) hadoop-env.sh ,配置hadoop的环境,将第25行的JAVA_HOME设置为/root/training/jdk1.8.0_144;
(2) hdfs-site.xml,设置数据块的冗余度,原则冗余度跟数据节点个数保持一致,最大不要超过3;
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
(3) core-site.xml,配置主节点的地址端口和数据块及元信息;
<property>
<name>fs.defaultFS</name>
<!--hdfs://主机名:端口-->
<value>hdfs://bigdata112:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<!--tmp文件需要新建-->
<value>/root/training/hadoop-2.7.3/tmp</value>
</property>
(4) mapred-site.xml(默认没有该文件),配置MR程序运行的容器;
//使用cp mapred-site.xml.template mapred-site.xml生成xml文件
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
(5) yarn-site.xml(默认没有该文件),配置Yarn主节点的位置和从节点的工作方式;
<property>
<name>yarn.resourcemanager.hostname</name>
<value>bigdata111</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
(6) slaves 配置从节点地址
bigdata113
bigdata114
(7) 对HDFS的NameNode进行格式化;
**进入目录:/root/training/hadoop-2.7.3/tmp
执行命令:hdfs namenode -format**
格式化成功的话,日志中出现Storage directory /root/training/hadoop-2.7.3/tmp/dfs/name has been successfully formatted.
3. bigdata112上安装好的目录复制到从节点上
scp -r hadoop-2.7.3/ root@bigdata113:/root/training
scp -r hadoop-2.7.3/ root@bigdata114:/root/training
4. 主节点上启动集群;
(1)start-all.sh
输入命令jps,
查看NameNode,SecondaryNameNode,DataNode,ResourceManager,NodeManager五个线程是否都起来
(2) 运行wordcount程序
本地文件data.xml上传的hdfs
**hdfs dfs -put data.txt /input/**
进入目录**root/training/hadoop-2.7.3/share/hadoop/mapreduce**
执行hadoop jar hadoop-mapreduce-examples-2.7.3.jar wordcount /input/data.txt /output/day1230/,运行该命令时**day1230文件不存在**
查看hdfs dfs -cat /output/day1230/part-r-00000