##单机模式 环境已经配好
ubuntu16.04安装hadoop3.02单机模式

##配置Hadoop伪分布式环境

1
cd /usr/local/hadoop/etc/hadoop/

###修改core-site.xml

1
2
3
4
5
6
7
8
9
10
11
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>

###修改hdfs-site.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/data</value>
</property>
</configuration>

进行NameNode格式化
进入/usr/local/hadoop

###执行./bin/hdfs namenode -format (第一次设置的时候格式化 下次直接启动就好)
启动NameNode 和 DataNode

1
./sbin/start-dfs.sh

输入jps,会出现如下进程

image.png

##访问localhost:9870(hadoop3.X的webUI已经改到端口 localhost:9870上面,而不是原来的50070,网上大多数的教程都是2.X的,当然不行)
image.png
关闭dfs

1
./sbin/stop-dfs.sh

##配置Yarn

1
cd /usr/local/hadoop/etc/hadoop

###1 配置mapred-site.xml (hadoop2.x 没有 mapred-site.xml 需要自己创建 hadoop3.x 可以直接打开 mapred-site.xml)
配置mapred-site.xml

mv mapred-site.xml.template mapred-site.xml   #hadoop2.x 执行此命令  hadoop3.x 不必执行
1
2
3
4
5
6
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>

###2 配置yarn-site.xml

1
2
3
4
5
6
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>

##3 启动Yarn

cd /usr/local/hadoop/
1
2
3
./sbin/start-dfs.sh   #启动dfs
./sbin/start-yarn.sh
./sbin/mr-jobhistory-daemon.sh start historyserver

###前面我已经启动过dfs了 所以。。
image.png

##访问localhost:8088
image.png

###关闭Yarn

1
2
3
./sbin/stop-dfs.sh
./sbin/stop-yarn.sh
./sbin/mr-jobhistory-daemon.sh stop historyserver

image.png

###集群

####说明 :集群是在伪分布式是的基础上搭建的 只需要改一些配置文件 然后 把配置好的master克隆就行

1 修改 /etc/hostname

sudo vim /etc/hostname
将内容修改为master/slave1/slave2

2 修改 /etc/hosts

image.png

3 配置 master 节点可通过 SSH 无密码访问 slave1

####单机模式 已经配过ssh免密码登录 所以把 master 的 authorized_keys拷贝到slave1 的 ./ssh文件下即可
ubuntu 16.04安装hadoop3.02单机模式

image.png

###master 尝试无密码登录slave1的ssh
image.png

##修改配置文件

1 修改 core-site.xml

cd /usr/local/hadoop/etc/hadoop
1
2
3
4
5
6
7
8
9
10
11
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
</configuration>

image.png
解释下:第一个fs.defaultFS设置master机为namenode hadoop.tmp.dir配置Hadoop的一个临时目录,用来存放每次运行的作业jpb的信息。

2 修改 hdfs-site.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/data</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>slave1:9001</value>
</property>
</configuration>

image.png

dfs.namenode.name.dir是namenode存储永久性的元数据的目录列表。这个目录会创建在master机上。dfs.namenode.data.dir是datanode存放数据块的目录列表,这个目录在slave11和slave1机都会创建。 dfs.replication 设置文件副本数,这里两个datanode,所以设置副本数为2。

配置mapred-site.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.application.classpath</name>
<value>
/usr/local/hadoop/etc/hadoop,
/usr/local/hadoop/share/hadoop/common/*,
/usr/local/hadoop/share/hadoop/common/lib/*,
/usr/local/hadoop/share/hadoop/hdfs/*,
/usr/local/hadoop/share/hadoop/hdfs/lib/*,
/usr/local/hadoop/share/hadoop/mapreduce/*,
/usr/local/hadoop/share/hadoop/mapreduce/lib/*,
/usr/local/hadoop/share/hadoop/yarn/*,
/usr/local/hadoop/share/hadoop/yarn/lib/*
</value>
</property>
</configuration>

image.png

解释下:这里设置的是运行jobtracker的服务器主机名和端口,也就是作业将在master主机的9001端口执行

配置yarn-site.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<configuration>
<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.ShuffleHandle</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:8025</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>master:8040</value>
</property>
</configuration>

image.png

###从master机器启动hadoop集群服务
进入/usr/local/hadoop

#####执行./bin/hdfs namenode -format 进行格式化操作

####启动 ./sbin/start-all.sh
image.png

###slave1 jps查看
image.png

####浏览器打开master:9870
image.png

####浏览器打开master:8088
image.png

###master关闭集群服务
image.png

###参考
Hadoop3.0.0在Ubuntu16.04上分布式部署
ubuntu16.04搭建hadoop集群环境
hadoop分布式集群安装