1.hadoop 安装包下载:http://archive.apache.org/dist/hadoop/core/
2.安装hadoop
1.tar zxvf hadoop-2.8.3.tar.gz -C /root/
mv hadoop-2.8.3 hadoop
2.hadoop-env.sh
1.cd /root/hadoop/etc/hadoop
2.vim hadoop-env.sh
3.hadoop-env.sh 修改如下
文件中设置的是 Hadoop 运行时需要的环境变量。
JAVA_HOME是必须设置的,即使我们当前的系统中设置了 JAVA_HOME,它也是不认识的,因为 Hadoop 即使是在本机上执行,
它也是把当前的执行环境当成远程服务器。
修改第25行:JAVA_HOME:export JAVA_HOME=/usr/java/jdk1.8.0_181-cloudera
3.core-site.xml
1.cd /root/hadoop/etc/hadoop
2.vim core-site.xml 修改如下:
<!-- 指定HADOOP所使用的文件系统schema(URI),HDFS的主节点(NameNode)的IP地址192.168.189.200 或 主机名node1-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://node1:9000</value>
</property>
<!-- 指定hadoop运行时产生文件的存储目录,默认/tmp/hadoop-${user.name} 这个目录非常重要,且不用自己创建,初始化的时候会自动创建 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/root/hadoopData</value>
</property>
<!-- 开启hdfs的垃圾桶机制,删除掉的数据可以从垃圾桶中回收,单位分钟 -->
<property>
<name>fs.trash.interval</name>
<value>10080</value>
</property>
4.hdfs-site.xml
1.cd /root/hadoop/etc/hadoop
2.vim hdfs-site.xml 修改如下:
<!-- 指定HDFS副本的数量 默认的为3 -->
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<!-- SecondaryNameNode(第二的NameNode)所在的第二台linux的IP地址192.168.189.201 或主机名node2 和 端口-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>node2:50090</value>
</property>
5.mapred-site.xml
1.cd /root/hadoop/etc/hadoop
2.mv mapred-site.xml.template mapred-site.xml
3.vim mapred-site.xml 修改如下:
<!-- 指定 MapReduce 运行时框架,这里指定在 yarn 上,默认是 local本地模式集群,所以此处需要修改为 yarn集群 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
6.yarn-site.xml
1.cd /root/hadoop/etc/hadoop
2.vim yarn-site.xml 修改如下:
<!-- 指定 YARN 的主节点(ResourceManager)所在的第一台Linux的IP地址192.168.189.200 或 主机名node1 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>node1</value>
</property>
<!-- NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MapReduce程序默认值:"" -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
7.修改 $HADOOP_HOME/etc/hadoop目录下的 slaves文件:slaves 文件里面记录的是集群主机名
1.cd /root/hadoop/etc/hadoop
2.vim slaves
删除 slaves文件中的信息localhost,添加集群中的所有主机名如下:
node1
node2
node3
8.配置Hadoop相关的 环境变量
1.编辑环境变量的profile配置文件: vim /etc/profile
2.profile配置文件末尾添加如下配置信息:
JAVA_HOME=/usr/java/jdk1.8.0_181-cloudera
CLASSPATH=.:$JAVA_HOME/lib/tools.jar
HADOOP_HOME=/root/hadoop(hadoop目录的绝对路径)
PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export JAVA_HOME CLASSPATH PATH
3.保存配置文件,重新加载配置文件:source /etc/profile
9.把 /root目录下的 hadoop文件夹 推送给第二台、第三台linux:
scp -r /root/hadoop root@node2:/root
scp -r /root/hadoop root@node3:/root
把 /etc目录下的 profile文件 推送给第二台、第三台linux的/etc目录下:
scp -r /etc/profile root@node2:/etc 重新加载配置文件:source /etc/profile
scp -r /etc/profile root@node3:/etc 重新加载配置文件:source /etc/profile
3.Hadoop 集群启动、初体验
1.格式化namenode(一定要在namenode的节点机器上格式化)
本质是对namenode进行初始化,两个命令都可,一定要在namenode的节点机器上格式化,格式化的时候就会创建 hadoop临时目录。
即格式化后会在根据core-site.xml中的 hadoop.tmp.dir 所配置 /root/hadoopData 生成目录。
同 core-site.xml 的 hadoop.tmp.dir,如果需要再次格式化,需要把每台服务器的 hadoop.tmp.dir 指定的数据文件夹删除。
格式一:hdfs namenode -format
格式二:hadoop namenode -format
2.单节点逐个启动
1.在主节点上使用以下命令启动 HDFS NameNode:hadoop-daemon.sh start namenode
2.在每个从节点上使用以下命令启动 HDFS DataNode:hadoop-daemon.sh start datanode
3.在主节点上使用以下命令启动 YARN ResourceManager:yarn-daemon.sh start resourcemanager
4.在每个从节点上使用以下命令启动 YARN nodemanager:yarn-daemon.sh start nodemanager
5.以上脚本位于$HADOOP_PREFIX/sbin/目录下。 如果想要停止某个节点上某个角色,只需要把命令中的 start 改为 stop 即可。
3.脚本一键启动(推荐)
如果配置了 etc/hadoop/slaves 和 ssh 免密登录,则可以使用程序脚本启动所有 Hadoop 两个集群的相关进程,在主节点所设定的机器上执行。
1.启动 hdfs 集群:(在主节点的机器上执行)
cd /root/hadoop/sbin
./start-dfs.sh
2.启动yarn集群:(在主节点的机器上执行)
cd /root/hadoop/sbin
./start-yarn.sh
3.停止 hdfs 集群:
cd /root/hadoop/sbin
./stop-dfs.sh
4.停止 yarn 集群:
cd /root/hadoop/sbin
./stop-yarn.sh
4.验证是否启动成功,使用jps命令验证
5.集群 web-ui
一旦 Hadoop 集群启动并运行,可以通过 web-ui 进行集群查看,如下所述:
NameNode(HDFS管理界面):192.168.189.200:50070 或 node1:50070
ResourceManager(MR管理界面):http://192.168.189.200:8088 或 node1:8088
6.可在C:\Windows\System32\drivers\etc 配置如下信息:
192.168.189.200 node1
192.168.189.201 node2
192.168.189.202 node3
7.运行 mapreduce 程序
在 Hadoop 安装包的 /root/hadoop/share/hadoop/mapreduce 下有官方自带的 mapreduce 程序。我们可以使用如下的命令进行运行测试。
示例程序 jar:hadoop-mapreduce-examples-2.8.3.jar
计算圆周率:
cd /root/hadoop/share/hadoop/mapreduce
hadoop jar hadoop-mapreduce-examples-2.8.3.jar pi 20 50
关于圆周率的估算,感兴趣的可以查询资料 Monte Carlo 方法来计算 Pi 值。
4.安全模式:
安全模式是HDFS所处的一种特殊状态,在这种状态下,文件系统只接受读数据请求,而不接受删除、修改等变更请求。
在NameNode主节点启动时,HDFS首先进入安全模式,DataNode在启动的时候会向namenode汇报可用的block等状态,当整个系统达到安全标准时,HDFS自动离开安全模式。
如果HDFS出于安全模式下,则文件block不能进行任何的副本复制操作,因此达到最小的副本数量要求是基于datanode启动时的状态来判定的,
启动时不会再做任何复制(从而达到最小副本数量要求),hdfs集群刚启动的时候,默认30S钟的时间是出于安全期的,
只有过了30S之后,集群脱离了安全期,然后才可以对集群进行操作 hdfs dfsadmin -safemode
6.查看日志信息:/root/hadoop/logs
7.列出 hadoop 中运行的 程序
1.hadoop job -list
2.使用 hadoop命令文件的 绝对路径:/root/hadoop/bin/hadoop job -list
8.停止掉 hadoop中运行的程序:
1.hadoop job -kill <jobID>
2.使用 hadoop命令文件的 绝对路径:/root/hadoop/bin/hadoop job -list