环境ubuntu16.04
这里有4台虚拟机ABC
A的IP 192.168.2.103
B的IP 192.168.2.104
C的IP 192.168.2.106
D的IP 192.168.2.107
节点配置情况如下
|
NN |
DN |
SN |
RM |
NM |
||
Node1 |
Y |
|
Y |
|
Y |
|
|
Node2 |
Y |
|
Y |
||||
Node3 |
|
Y |
|
|
Y |
||
Node4 |
|
Y |
|
|
|
Y |
1.前期准备(每台机器)
2.修改ABCD虚拟机的hostname
vi /etc/hostname
A的hostname改为 node1
B的hostname改为 node2
C的hostname改为 node3
D的hostname改为 node4
3.修改虚拟机的Hosts
vi /etc/hosts
加入以下内容(四台加一样的)
192.168.2.103 node1
192.168.2.104 node2
192.168.2.106 node3
192.168.2.107 node4
4.查看每台机器是否能相互ping通
5. 创建用户和用户组(四台机器都一样的操作)
创建用户组 addgroup hadoop
创建用户 adduser -ingroup hadoop hadoop
6.给hadoop用户添加权限(四台机器都一样的操作)
vi /etc/sudoers
在root ALL=(ALL:ALL) ALL下面添加一行
hadoop ALL=(ALL:ALL) ALL
7.四台机器以hadoop用户登录
su hadoop
8.安装JAVA(四台机器都一样的操作)
安装步骤:Linux安装JAVA
9.配置SSH让各节点之间实现相互免密码登录
如果没有请看配置步骤:SSH免密码登录
10.hadoop安装(如无特别说明,四台机器都一样的操作)
创建路径
mkdir /app/hadoop
cd /app/hadoop
下载(直接在/app/hadoop里面下载)
wget http://mirror.bit.edu.cn/apache/hadoop/common/stable/hadoop-2.9.0.tar.gz
解压
tar -zxvf hadoop-2.9.0.tar.gz
创建文件夹
mkdir /app/hadoop/dfs
mkdir /app/hadoop/dfs/name
mkdir /app/hadoop/dfs/data
mkdir /app/hadoop/tmp
修改配置文件 hadoop-env.sh
vi /app/hadoop/hadoop-2.9.0/etc/hadoop/hadoop-env.sh
修改JAVA_HOME的值
export JAVA_HOME=/app/java/jdk1.8.0_101
修改配置文件slaves 配置datanode
vi /app/hadoop/hadoop-2.9.0/etc/hadoop/slaves
将内容改为
node2
node3
node4
修改配置文件core-site.xml
vi /app/hadoop/hadoop-2.9.0/etc/hadoop/core-site.xml
第一个是namenode的入口
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://node1:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/app/hadoop/tmp</value>
</property>
</configuration>
修改配置文件hdfs-site.xml
vi /app/hadoop/hadoop-2.9.0/etc/hadoop/hdfs-site.xml
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>node1:9001</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/app/hadoop/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/app/hadoop/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
修改配置文件mapred-site.xml
cd /app/hadoop/hadoop-2.9.0/etc/hadoop
scp mapred-site.xml.template mapred-site.xml
vi mapred-site.xml
<property><name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>node1:10020</value>
</property>
<property>
</property>
在windows中的eclipse运行提交到linux上的集群,需要添加一下配置
不然报错/bin/bash: line 0: fg: no job control
<property>
<name>mapreduce.app-submission.cross-platform</name>
<value>true</value>
</property>
<property>
<name>mapreduce.application.classpath</name>
<value>
/app/hadoop/hadoop-2.9.0/etc/hadoop,
/app/hadoop/hadoop-2.9.0/share/hadoop/common/*,
/app/hadoop/hadoop-2.9.0/share/hadoop/common/lib/*,
/app/hadoop/hadoop-2.9.0/share/hadoop/hdfs/*,
/app/hadoop/hadoop-2.9.0/share/hadoop/hdfs/lib/*,
/app/hadoop/hadoop-2.9.0/share/hadoop/mapreduce/*,
/app/hadoop/hadoop-2.9.0/share/hadoop/mapreduce/lib/*,
/app/hadoop/hadoop-2.9.0/share/hadoop/yarn/*,
/app/hadoop/hadoop-2.9.0/share/hadoop/yarn/lib/*
</value>
</property>
修改配置文件yarn-site.xml
cd /app/hadoop/hadoop-2.9.0/etc/hadoop
vi yarn-site.xml
配置resourcemanager结点在哪个服务器上运行
<property>
<name>yarn.resourcemanager.hostname</name>
<value>node1</value>
</property>
指定做中间数据调度的时候使用的是哪一种机制
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
在windows中的eclipse运行提交到linux上的集群,需要添加一下配置
不然报错/bin/bash: line 0: fg: no job control
<property>
<name>yarn.application.classpath</name>
<value>
/app/hadoop/hadoop-2.9.0/etc/hadoop,
/app/hadoop/hadoop-2.9.0/share/hadoop/common/*,
/app/hadoop/hadoop-2.9.0/share/hadoop/common/lib/*,
/app/hadoop/hadoop-2.9.0/share/hadoop/hdfs/*,
/app/hadoop/hadoop-2.9.0/share/hadoop/hdfs/lib/*,
/app/hadoop/hadoop-2.9.0/share/hadoop/mapreduce/*,
/app/hadoop/hadoop-2.9.0/share/hadoop/mapreduce/lib/*,
/app/hadoop/hadoop-2.9.0/share/hadoop/yarn/*,
/app/hadoop/hadoop-2.9.0/share/hadoop/yarn/lib/*
</value>
配置环境变量
sudo vi /etc/profile
在文件末尾加上
export HADOOP_HOME=/app/hadoop/hadoop-2.9.0
export PATH=:$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
使修改的环境变量生效
source /etc/profile
格式化namenode(只在namenode,secondary namenode上执行,即是node1和node2)
cd /app/hadoop/hadoop-2.9.0/bin
hdfs namenode -format
启动hadoop
(只在namenode上面执行,即是node1)
cd /app/hadoop/hadoop-2.9.0/sbin
start-all.sh
四台机器输入jps查看是否正确启动
node1
node2
node3
node4
11.在hadoop集群运行任务(只用在namenode上面执行,即是node1)
在HDFS上创建路径
cd /app/hadoop/hadoop-2.9.0/bin
hdfs dfs -mkdir -p /data/input
将要计数的文件放到HDFS上
hdfs dfs -put ~/wordcount.txt /data/input
查看是否将文件放到了HDFS上
hdfs dfs -ls /data/input
运行单词统计任务
cd /app/hadoop/hadoop-2.9.0
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.9.0.jar wordcount /data/input /data/output/wordcount
查看结果
hdfs dfs -cat /data/output/wordcount/part-r-00000
图形化信息界面用node1的IP
http://192.168.2.103:50070
http://192.168.2.103:8088