Hadoop-2.7.6 集群部署搭建
一、 前期准备
1.1 安装JDK并配置环境变量
vim /etc/profile
#JAVA环境变量
export JAVA_HOME=/home/iot/jzz/jdk1.8.0_231
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
查看是否安装成功
java -version
1.2 虚拟机配置
操作系统 | 主机名 | IP |
---|---|---|
Ubuntu | slave1 | 192.168.0.118 |
Ubuntu | slave2 | 192.168.0.119 |
Ubuntu | slave3 | 192.168.0.120 |
#配置hosts,在三台机子上都配置上
vim /etc/hosts
1.3 配置ssh免密登录
配置好每台机子的免密通信,并能实现三台机子互相通信
二、Hadoop集群部署
2.1 下载安装并配置环境
下载hadoop地址:http://archive.apache.org/dist/hadoop/common/
# 下载后解压到指定目录
tar -zxvf hadoop-2.7.6.tar.gz -C /opt/apps
配置hadoop环境变量
vim /etc/profile
export HADOOP_HOME=/opt/apps/hadoop-2.7.6
export PATH=$PATH:$HADOOP_HOME/bin
查看是否安装成功
source /etc/profile
hadoop version
2.2 设置hadoop配置文件
首先,进入文件目录
cd /opt/apps/hadoop-2.7.6/etc/hadoop
1、hadoop-env.sh:用来配置hadoop所需要的jdk的环境,是hadoop可以调用本机的jdk。
2、core-site.xml :里面的参数
fs.defaultFS,用来说明hadoop使用什么文件系统。
hadoop.tmp.dir,hadoop文件存储目录。
还有两个参数一般不做修改,
fs.checkpoint.period,表示多长时间记录一次hdfs的镜像,默认是1小时。
fs.checkpoint.size,表示镜像文件快大小,默认64M。
3、hdfs-site.xml:用来指定namenode和datanode的存放目录,还有存放数据的副本数,一般默认为3。
4、mapred-site.xml:mapreduce的参数。
5、yarn-site.xml :集群资源管理系统参数。
6、slaves:需要启动datanode和nodemanager的虚拟机
修改内容如下:
hadoop-env.sh
vim hadoop-env.sh
#设置JAVA环境
core-site.xml
vim core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://slave1:9000</value>
<description>指定HDFS的(NameNode)的地址</description>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/opt/apps/hadoop-2.7.6/dfs/tmp</value>
<description>指定hadoop运行时产生文件的存储目录</description>
</property>
</configuration>
hdfs-site.xml
vim hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
<description>指定HDFS副本的数量</description>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/opt/apps/hadoop-2.7.6/dfs/name</value>
<description>namenode的存储路径</description>
</property>
<property>
<name>dfs.datenode.date.dir</name>
<value>file:/opt/apps/hadoop-2.7.6/dfs/date</value>
<description>指定datenode的路径</description>
</property>
</configuration>
mapred-site.xml
mv mapred-site.xml.template mapred-site.xml
vim mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
yarn-site.xml
vim yarn-site.xml
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>slave1</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
slaves
vim slaves
slave1
slave2
slave3
这里三台机子都是这样的配置
2.3 主节点初始化文件系统
首次启动时,只在slave1主节点格式化文件系统。执行完后可以看到在~/apps/hadoop-2.7.6/dfs/下面会自动生成一个叫name的文件夹
./bin/hdfs namenode -format
2.4 启动Hadoop集群
/opt/apps/hadoop-2.7.6/sbin/start-all.sh
2.5 验证集群是否启动成功
方法1查看进程数据
在主节点上可以看到下面5个进程
NodeManager
ResourceManager
DataNode
NameNode
SecondaryNameNode
在从节点只有2个
DataNode
NodeManager
方法2 在浏览器访问console页面
访问hadoop页面:
http://192.168.0.118:50070
访问yarn页面:
http://192.168.0.118:8088
注意事项:
如果DataNode没有启动,那就说明你可能原本DataNode的目录被使用过了,里面的对于NameNode的编号与现在的不一致。解决方法:如果DataNode文件夹里存在数据,那么你需要修改Current下的version,使其与DataNode上的保持一致。如果DataNode里面没有数据,是刚搭建的,那么可以先将HDFS关闭,然后删除DataNode文件夹,再次打开HDFS,这样的话,DataNode就会重新获取NameNode的信息,就可以连接上了。
2.6 停止hadoop集群
/opt/apps/hadoop-2.7.6/sbin/stop-all.sh
三、提交MapeReduce Job
3.1 在HDFS上创建文件夹
hadoop dfs -mkdir /data
3.2 创建数据源wordcont.txt 并提交到Hdfs
vim wordcont.txt
添加:
hello hadoop
hello spark
hello yarm
hadoop dfs -put wordcount.txt /data
查看是否上传成功
3.3 运行MR
cd /opt/apps/hadoop-2.7.6/share/hadoop/mapreduce
hadoop jar hadoop-mapreduce-examples-2.7.6.jar wordcount /data /data/wordresult
其中 wordcount为程序的主类名, /data 输入目录,/data /wordresult 输出目录,且输出目录不能存在,否则会报错.
通过管理界面查看效果:
可以看到成功输出到hdfs输出目录,yarm界面也记录这个Job成功运行
希望文章能对你有帮助