硬件:Ubuntu16.04
软件:JDK1.8、Hadoop3.3.0
数据存放路径:~/dataset
tar包路径:~/software
tar包压缩路径:~/bigdata
软件安装路径:/opt
实验设计创建文件:~/resource
Hadoop运行模式分为本地运行模式、伪分布运行模式、集群运行模式。
Hadoop3的本地模式,指的是Hadoop各组件程序都运行在同一个JVM上,不需要单独启动任何Hadoop进程。这种模式适宜用在开发阶段。
Hadoop3的运行需要JDK8的支持,必须先安装JDK8环境
# 1.JDK安装包解压
tar -zxvf ./jdk-8u162-linux-x64.tar.gz -C /usr/lib/jvm/
# 2.配置环境变量
vim /etc/profile
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_162
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
source /etc/profile
# 3.测试JDK安装
java -version
# 1.Hadoop3安装包解压
tar -zxvf hadoop-3.1.3.tar.gz -C ~/bigdata/
mv hadoop-3.1.3 hadoop
# 2.配置环境变量
vim /etc/profile
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_162
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export HADOOP_HOME=/root/bigdata/hadoop
export PATH=${JAVA_HOME}/bin:$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
source /etc/profile
# 3.测试Hadoop3安装
hadoop version
# 运行pi程序,先进入到程序示例.jar包所在的目录,然后运行MR程序
cd ~/bigdata/hadoop/share/hadoop/mapreduce
hadoop jar hadoop-mapreduce-examples-3.1.3.jar pi 10 20 #在输出内容中,可以找到计算出的PI值
掌握Hadoop3伪分布模式环境的搭建、文件配置和环境测试。
Hadoop的运行模式分为3种:本地运行模式,伪分布运行模式,集群运行模式。
伪分布模式是将守护程序运行在本地主机,模拟一个小规模集群。这里不但需要本地模式的操作过程,需要对配置文件进行配置
# 1.JDK安装包解压
tar -zxvf ./jdk-8u162-linux-x64.tar.gz -C /usr/lib/jvm/
# 2.配置环境变量
vim /etc/profile
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_162
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
source /etc/profile
# 3.测试JDK安装
java -version
Hadoop在启动过程中是通过SSH远程操作的,所以在不做特殊配置下每次启动到相关节点时都要输入密码。
如果想避免每次都输入密码,需要设置免密登录。
# 1.生成密钥
rm -rf ~/.ssh #若设备已经提前配置需要先删除
ssh-keygen #在目录~/.ssh/下会生成两个文件:id rsa私钥、id_rsa.pub公钥
# 2.将公钥写入认证文件中,则下次登录可以实现免密登录
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
# 1.Hadoop3安装包解压
tar -zxvf hadoop-3.1.3.tar.gz -C ~/bigdata/
mv hadoop-3.1.3 hadoop
# 2.配置环境变量
vim /etc/profile
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_162
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export HADOOP_HOME=/root/bigdata/hadoop
export PATH=${JAVA_HOME}/bin:$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
source /etc/profile
# 3.测试Hadoop3安装
hadoop version
Hadoop共需要配置5个文件(可选地配置workers文件)均位于Hadoop安装目录下的etc/hadoop/
子目录下
cd ~/bigdata/hadoop/etc/hadoop
# 1.配置hadoop-env.sh文件
vim hadoop-env.sh #找到并修改JAVA_HOME属性的值
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_162
# 2.配置core-site.xml文件
vim core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://192.168.172.129:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/root/bigdata/hadoop/tmp</value>
</property>
</configuration>
# 3.配置hdfs-site.xml文件
vim hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/root/bigdata/hadoop/tmp/dfs/name</value>
<description>为了保证元数据的安全一般配置多个不同目录</description>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/root/bigdata/hadoop/tmp/dfs/data</value>
<description>datanode的数据存储目录</description>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
<description>HDFS的数据块的副本存储个数,默认是3</description>
</property>
<property>
<name>dfs.permissions.enabled</name>
<value>false</value>
</property>
</configuration>
# 4.配置mapred-site.xml文件
vim mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.application.classpath</name>
<value>$HADOOP_HOME/share/hadoop/mapreduce/*:$HADOOP_HOME/share/hadoop/mapreduce/lib/*</value>
</property>
</configuration>
# 5.配置yarn-site.xml文件
vim yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
<!-- 指定ResourceManager的地址-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>192.168.172.129</value>
</property>
<!-- 指定reducer获取数据的方式-->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.local-dirs</name>
<value>file:/root/bigdata/hadoop/yarn/nm</value>
</property>
</configuration>
格式化HDFS(仅需执行格式化一次),在终端窗口执行下面的命令
cd ~/bigdata/hadoop/bin/
./hdfs namenode -format
如果因为某些原因需要从头重新配置集群,那么在重新格式化HDFS之前,先把Haoop下的tmp目录删除。
tmp目录是在hdfs-site.xml文件中自己指定的,其下有两个子目录name和data,重新格式化之前必须删除它们。
格式化namenode,实际上就是在namenode上创建一块命名空间。在创建过程中会加载所配置的文件,检验是否配置正确。
如何检验hdfs格式化是否成功?
# 1.修该配置文件/etc/profile
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_162
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export HADOOP_HOME=/root/bigdata/hadoop
export PATH=${JAVA_HOME}/bin:$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
# 2.启动启动HDFS集群
cd ~/bigdata/hadoop/sbin
./start-dfs.sh
jps #使用jps命令查看当前节点上运行的服务
# 3.成功启动后,可以通过Web界面查看NameNode和Datanode信息和HDFS文件系统。NameNode Web接口:http://localhost:9870
# 4.启动yarn:
cd ~/bigdata/hadoop/sbin
./start-yarn.sh
jps
# 5.启动historyserver历史服务器和timelineserver时间线服务器
cd ../bin/
./mapred --daemon start historyserver
./yarn --daemon start timelineserver
# 6.运行pi程序,先进入到程序示例.jar包所在的目录,然后运行MR程序
cd ~/bigdata/hadoop/share/hadoop/mapreduce
hadoop jar hadoop-mapreduce-examples-3.1.3.jar pi 1 2 #在输出内容中,可以找到计算出的PI值
# 7.可以通过 Web 界面查看
打开浏览器,在地址栏输入:http://localhost:8088
查看任务进度:http://localhost:8088/cluster
在 Web 界面点击 “Tracking UI” 这一列的 History 连接,可以看到任务的运行信息。
同样,URL中的cda是我的机器名,请替换为你自己的机器名。
# 8.关闭集群
cd ~/bigdata/hadoop/sbin
./stop-yarn.sh
./stop-dfs.sh
cd ../bin
./mapred --daemon stop historyserver
./yarn --daemon stop timeline
step2:首先启动HDFS集群,使用jps命令查看当前节点上运行的服务
step3:成功启动后,通过Web界面查看NameNode和Datanode信息和HDFS文件系统。NameNode Web接口:http://localhost:9870
step7:运行pi程序,先进入到程序示例.jar包所在的目录,然后运行MR程序
step8:在浏览器地址栏输入http://localhost:8088/cluster 查看任务进度: