共计 13020 个字符,预计需要花费 33 分钟才能阅读完成。
如果你还没有虚拟机,请参考:http://www.linuxidc.com/Linux/2017-03/141646.htm
如果你还没有试过单机模式,请参考:http://www.linuxidc.com/Linux/2017-03/142050.htm
如果你还没有试过集群模式,请参考:http://www.linuxidc.com/Linux/2017-03/142051.htm
集群规划
主机名 | ip | 安装的软件 | 进程 |
---|---|---|---|
Hadoop01 | 192.168.1.101 | jdk、hadoop | NN、DFSZKFailoverController |
hadoop02 | 192.168.1.102 | jdk、hadoop | NN、DFSZKFailoverController |
hadoop03 | 192.168.1.103 | jdk、hadoop | RM |
hadoop04 | 192.168.1.104 | jdk、hadoop、zookeeper | DN、NM、journalnode |
hadoop05 | 192.168.1.105 | jdk、hadoop、zookeeper | DN、NM、journalnode |
hadoop06 | 192.168.1.106 | jdk、hadoop、zookeeper | DN、NM、journalnode |
六台主机
主机名:
hadoop01、hadoop02、hadoop03、hadoop04、hadoop05、hadoop06
如果不会请参考:http://www.linuxidc.com/Linux/2017-03/141646.htm
用户名:Hadoop
密码:12345678
设置主机名映射(root 用户)
将本机的主机名和 IP 建立映射关系
vi /etc/hosts
加入如下文件:
192.168.2.101 hadoop01
192.168.2.102 hadoop02
192.168.2.103 hadoop03
192.168.2.104 hadoop04
192.168.2.105 hadoop05
192.168.2.106 hadoop06
拷贝 /etc/hosts 到其它主机
scp /etc/hosts hadoop02:/etc/
scp /etc/hosts hadoop03:/etc/
scp /etc/hosts hadoop04:/etc/
scp /etc/hosts hadoop05:/etc/
scp /etc/hosts hadoop06:/etc/
开放常用端口(root 用户)
# 关闭防火墙
sudo systemctl stop firewalld.service
# 关闭开机启动
sudo systemctl disable firewalld.service
创建专有的用户(root 用户)
一般是建专有的 hadoop 用户,不在 root 用户上面搭建
创建组和用户
这里每台虚拟主机都应该有 hadoop 用户
# 先创建组 cloud
groupadd cloud
# 创建用户并加入组 cloud
useradd -g cloud hadoop
# 修改用户 hadoop 的密码
passwd hadoop
将 hadoop 用户加到 sodu 列表
1、查看 /etc/sudoers 的权限
ls -l /etc/sudoers
可以看的是只读权限,如果我们要修改就必须先改变该文件的权限
2、修改权限
chmod 777 /etc/sudoers
3、将 hadoop 添加 root 权限
vim /etc/sudoers
在 root 下加入下面 hadoop 用户
4、还原权限
chmod 440 /etc/sudoers
拷贝 /etc/sudoers 到其它主机
scp /etc/sudoers hadoop02:/etc/
scp /etc/sudoers hadoop03:/etc/
scp /etc/sudoers hadoop04:/etc/
scp /etc/sudoers hadoop05:/etc/
scp /etc/sudoers hadoop06:/etc/
配置免密码登录(hadoop 用户)
切换 hadoop 用户
su hadoop
进入到当前用户的根目录
cd ~
查看所有文件
ls –la
进入.ssh 目录
cd .ssh
生产公钥和私钥(四个回车)
ssh-keygen -t rsa
执行完这个命令后,会生成两个文件 id_rsa(私钥)、id_rsa.pub(公钥)
将公钥拷贝到要免登陆的机器上
ssh-copy-id 192.168.2.101
ssh-copy-id 192.168.2.102
ssh-copy-id 192.168.2.103
ssh-copy-id 192.168.2.104
ssh-copy-id 192.168.2.105
ssh-copy-id 192.168.2.106
这时会在 192.168.2.102 主机的.ssh/ 下产生一个名为 authorized_keys 的文件,这时通过 ssh 192.168.2.102 时可以直接免登陆进入主机
如下:
同理可以给其他机器也设置免密码登录。
准备软件
在 /home/hadoop/ 下创建 cloud 文件夹,用来安装相关软件,同时所用安装包放在 cloud 下的 soft-install 文件夹下,如:
cd /home/hadoop
mkdir cloud
mkdir soft-install
在 soft-install 里上传我们需要的软件:
上传我们所需要的软件到这个目录
安装 jdk
解压
tar -zxvf jdk-8u91-linux-x64.tar.gz -C /home/hadoop/cloud/
配置环境变量
# 修改配置文件
sudo vi /etc/profile
# 在最后下添加
export JAVA_HOME=/home/hadoop/cloud/jdk1.8.0_91
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
# 刷新配置文件
source /etc/profile
将 jdk 和环境变量分别拷贝到其他主机上
可以直接将 cloud 文件夹复制过去
scp -r cloud/ hadoop02:/home/hadoop/
scp -r cloud/ hadoop03:/home/hadoop/
scp -r cloud/ hadoop04:/home/hadoop/
scp -r cloud/ hadoop05:/home/hadoop/
scp -r cloud/ hadoop06:/home/hadoop/
将环境变量拷贝到其他主机下
sudo scp /etc/profile hadoop02:/etc/
sudo scp /etc/profile hadoop03:/etc/
sudo scp /etc/profile hadoop04:/etc/
sudo scp /etc/profile hadoop05:/etc/
sudo scp /etc/profile hadoop06:/etc/
刷新环境变量
source /etc/profile
安装 zookeeper
如果不懂 Zookeeper 请参考:http://www.linuxidc.com/Linux/2013-06/85549.htm
下载地址:http://mirrors.hust.edu.cn/apache/zookeeper/
安装
前面我们已经安装的 jdk,现在我们在 hadoop04、hadoop05、hadoop06 上安装 Zookeeper
1、解压
tar -zxvf zookeeper-3.4.8.tar.gz -C /home/hadoop/cloud/
2、修改 Zookeeper 的默认配置 conf/zoo_sample.cfg
mv zoo_sample.cfg zoo.cfg
vi zoo.cfg
配置如下:
# 修改 dataDir 指向我们数据
dataDir=/home/hadoop/cloud/zookeeper-3.4.8/data
# 并在最后添加
server.1=hadoop04:2888:3888
server.2=hadoop05:2888:3888
server.3=hadoop06:2888:3888
3、在 /home/hadoop/cloud/zookeeper-3.4.8/ 目录下创建 data 文件夹
mkdir data
4、在 data 文件夹下创建 myid 文件指明本机 id
vim myid
id 分别对应为 hadoop04 为 1,hadoop05 为 2,hadoop06 为 3 后面我们再统一拷贝
5、复制 zookeeper-3.4.8 到 105、106 机器上并修改相应的 myid
scp -r zookeeper-3.4.8/ hadoop04:/home/hadoop/cloud/
scp -r zookeeper-3.4.8/ hadoop05:/home/hadoop/cloud/
scp -r zookeeper-3.4.8/ hadoop06:/home/hadoop/cloud/
启动 Zookeeper
分别在 hadoop04、hadoop05、hadoop06 上启动 Zookeeper
# 执行 /home/hadoop/cloud/zookeeper-3.4.8/bin 目录下的脚本启动
./zkServer.sh start
查看 zookeeper 的状态
./zkServer.sh status
在 bin/ 目录下运行,运行结果如下说明成功(此时至少运行 2 台)
其实我们可以找到 leader 然后 stop,会发现 Zookeeper 会立即切换 Leader
更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2017-03/142052p2.htm
安装 Hadoop
安装(现在 hadoop01 安装,然后复制其他机器)
解压
tar -zxvf hadoop-2.7.2.tar.gz -C /home/hadoop/cloud/
配置环境变量
# 修改配置文件
sudo vi /etc/profile
# 在最后下添加
export HADOOP_HOME=/home/hadoop/cloud/hadoop-2.7.2
export PATH=$PATH:$HADOOP_HOME/bin
# 刷新配置文件
source /etc/profile
测试:
which hadoop
修改配置文件(6 个)
hadoop-env.sh
# The java implementation to use.
export JAVA_HOME=/home/hadoop/cloud/jdk1.8.0_91
core-site.xml
<configuration>
<!-- 指定 hadoop 运行时产生文件的存储路径 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/cloud/hadoop-2.7.2/tmp</value>
</property>
<!-- 指定 hdfs 的 nameservice 为 ns1 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://ns1</value>
</property>
<!-- 指定 zookeeper 地址,多个用, 分割 -->
<property>
<name>ha.zookeeper.quorum</name>
<value>hadoop04:2181,hadoop05:2181,hadoop06:2181</value>
</property>
</configuration>
hdfs-site.xml
<configuration>
<!-- dfs.nameservices 命名空间的逻辑名称,多个用, 分割 -->
<property>
<name>dfs.nameservices</name>
<value>ns1</value>
</property>
<!-- 指定 ns1 下有两个 namenode,分别是 nn1,nn2 -->
<property>
<name>dfs.ha.namenodes.ns1</name>
<value>nn1,nn2</value>
</property>
<!-- 指定 nn1 的 RPC 通信地址 -->
<property>
<name>dfs.namenode.rpc-address.ns1.nn1</name>
<value>hadoop01:8020</value>
</property>
<!-- 指定 nn1 的 HTTP 通信地址 -->
<property>
<name>dfs.namenode.http-address.ns1.nn1</name>
<value>hadoop01:50070</value>
</property>
<!-- 指定 nn2 的 RPC 通信地址 -->
<property>
<name>dfs.namenode.rpc-address.ns1.nn2</name>
<value>hadoop02:8020</value>
</property>
<!-- 指定 nn2 的 HTTP 通信地址 -->
<property>
<name>dfs.namenode.http-address.ns1.nn2</name>
<value>hadoop02:50070</value>
</property>
<!-- 指定 namenode 的元数据存放的 Journal Node 的地址,必须基数,至少三个 -->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://hadoop04:8485;hadoop05:8485;hadoop06:8485/ns1</value>
</property>
<!-- 这是 JournalNode 进程保持逻辑状态的路径。这是在 linux 服务器文件的绝对路径 -->
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/home/hadoop/cloud/hadoop-2.7.2/journal/</value>
</property>
<!-- 开启 namenode 失败后自动切换 -->
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<!-- 配置失败自动切换实现方式 -->
<property>
<name>dfs.client.failover.proxy.provider.ns1</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<!-- 配置隔离机制方法,多个机制用换行分割 -->
<property>
<name>dfs.ha.fencing.methods</name>
<value>
sshfence
shell(/bin/true)
</value>
</property>
<!-- 使用 sshfence 隔离机制时需要 ssh 免登陆 -->
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/home/hadoop/.ssh/id_rsa</value>
</property>
<!-- 配置 sshfence 隔离机制超时时间 30 秒 -->
<property>
<name>dfs.ha.fencing.ssh.connect-timeout</name>
<value>30000</value>
</property>
</configuration>
mapred-site.xml.template
需要重命名:mv mapred-site.xml.template mapred-site.xml
<configuration>
<!-- 通知框架 MR 使用 YARN -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
yarn-site.xml
<configuration>
<!-- 指定 YARN 的老大(RM)的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop03</value>
</property>
<!-- reducer 取数据的方式是 mapreduce_shuffle -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
slaves
hadoop04
hadoop05
hadoop06
并在 hadoop-2.7.2 文件下 创建 tmp 文件:
mkdir tmp
将配置好的文件拷贝到其他主机
将 hadoop-2.5.2 拷贝到其他主机下
scp -r hadoop-2.7.2 hadoop02:/home/hadoop/cloud/
scp -r hadoop-2.7.2 hadoop03:/home/hadoop/cloud/
scp -r hadoop-2.7.2 hadoop04:/home/hadoop/cloud/
scp -r hadoop-2.7.2 hadoop05:/home/hadoop/cloud/
scp -r hadoop-2.7.2 hadoop06:/home/hadoop/cloud/
将环境变量拷贝到其他主机下
sudo scp /etc/profile hadoop02:/etc/
sudo scp /etc/profile hadoop03:/etc/
sudo scp /etc/profile hadoop04:/etc/
sudo scp /etc/profile hadoop05:/etc/
sudo scp /etc/profile hadoop06:/etc/
刷新环境变量
source /etc/profile
启动
启动的时候注意启动顺序
1、启动 zookeeper(在 hadoop04、05、06 )
2、启动 journal node(在 hadoop04、05、06)
#hadoop-2.7.2/sbin 下
./sbin/hadoop-daemon.sh start journalnode
3、格式化 HDFS(namenode)第一次要格式化(在 hadoop01、02 中任意一台)(这里直接复制会有问题,最好手动输入)
./bin/hdfs namenode –format
并把 /home/hadoop/cloud/hadoop-2.7.2/tmp 文件夹拷贝到另一台 namenode 的目录下
scp -r /home/hadoop/cloud/hadoop-2.7.2/tmp hadoop@hadoop02:/home/hadoop/cloud/hadoop-2.7.2/
4、格式化 zk(在 hadoop01 即可)(这里直接复杂会有问题,最好手动输入)
./bin/hdfs zkfc –formatZK
5、启动 zkfc 来监控 NN 状态(在 hadoop01、02)
./sbin/hadoop-daemon.sh start zkfc
6、启动 HDFS(namenode)(在 hadoop01 即可)
#hadoop-2.7.2/sbin 下
./sbin/start-dfs.sh
7、启动 YARN(MR)(在 hadoop03 即可)
#hadoop-2.7.2/sbin 下
./sbin/start-yarn.sh
查看结果
如果上面的启动没有报错的的话,这时在我们的虚拟主机上应该分别有自己的进程,如前文我们规划的一样。
查看本机的 Java 进程
jps
通过浏览器测试如下:
http://192.168.2.101:50070/
可以看出 hadoop01 的 namenode 是处于一种 standby 状态,那么 hadoop02 应该是处于 active 状态
查看 YARN 的状态
http://192.168.2.103:8088/
下面关于 Hadoop 的文章您也可能喜欢,不妨看看:
Ubuntu14.04 下 Hadoop2.4.1 单机 / 伪分布式安装配置教程 http://www.linuxidc.com/Linux/2015-02/113487.htm
CentOS 6.3 下 Hadoop 伪分布式平台搭建 http://www.linuxidc.com/Linux/2016-11/136789.htm
Ubuntu 14.04 LTS 下安装 Hadoop 1.2.1(伪分布模式)http://www.linuxidc.com/Linux/2016-09/135406.htm
Ubuntu 上搭建 Hadoop 环境(单机模式 + 伪分布模式)http://www.linuxidc.com/Linux/2013-01/77681.htm
实战 CentOS 系统部署 Hadoop 集群服务 http://www.linuxidc.com/Linux/2016-11/137246.htm
Hadoop 2.6.0 HA 高可用集群配置详解 http://www.linuxidc.com/Linux/2016-08/134180.htm
Spark 1.5、Hadoop 2.7 集群环境搭建 http://www.linuxidc.com/Linux/2016-09/135067.htm
在 Ubuntu X64 上编译安装 Hadoop http://www.linuxidc.com/Linux/2016-12/138568.htm
CentOS 6.7 安装 Hadoop 2.7.3 http://www.linuxidc.com/Linux/2017-01/139089.htm
CentOS7+Hadoop2.5.2+Spark1.5.2 环境搭建 http://www.linuxidc.com/Linux/2017-01/139364.htm
更多 Hadoop 相关信息见Hadoop 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=13
本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-03/142052.htm
如果你还没有虚拟机,请参考:http://www.linuxidc.com/Linux/2017-03/141646.htm
如果你还没有试过单机模式,请参考:http://www.linuxidc.com/Linux/2017-03/142050.htm
如果你还没有试过集群模式,请参考:http://www.linuxidc.com/Linux/2017-03/142051.htm
集群规划
主机名 | ip | 安装的软件 | 进程 |
---|---|---|---|
Hadoop01 | 192.168.1.101 | jdk、hadoop | NN、DFSZKFailoverController |
hadoop02 | 192.168.1.102 | jdk、hadoop | NN、DFSZKFailoverController |
hadoop03 | 192.168.1.103 | jdk、hadoop | RM |
hadoop04 | 192.168.1.104 | jdk、hadoop、zookeeper | DN、NM、journalnode |
hadoop05 | 192.168.1.105 | jdk、hadoop、zookeeper | DN、NM、journalnode |
hadoop06 | 192.168.1.106 | jdk、hadoop、zookeeper | DN、NM、journalnode |
六台主机
主机名:
hadoop01、hadoop02、hadoop03、hadoop04、hadoop05、hadoop06
如果不会请参考:http://www.linuxidc.com/Linux/2017-03/141646.htm
用户名:Hadoop
密码:12345678
设置主机名映射(root 用户)
将本机的主机名和 IP 建立映射关系
vi /etc/hosts
加入如下文件:
192.168.2.101 hadoop01
192.168.2.102 hadoop02
192.168.2.103 hadoop03
192.168.2.104 hadoop04
192.168.2.105 hadoop05
192.168.2.106 hadoop06
拷贝 /etc/hosts 到其它主机
scp /etc/hosts hadoop02:/etc/
scp /etc/hosts hadoop03:/etc/
scp /etc/hosts hadoop04:/etc/
scp /etc/hosts hadoop05:/etc/
scp /etc/hosts hadoop06:/etc/
开放常用端口(root 用户)
# 关闭防火墙
sudo systemctl stop firewalld.service
# 关闭开机启动
sudo systemctl disable firewalld.service
创建专有的用户(root 用户)
一般是建专有的 hadoop 用户,不在 root 用户上面搭建
创建组和用户
这里每台虚拟主机都应该有 hadoop 用户
# 先创建组 cloud
groupadd cloud
# 创建用户并加入组 cloud
useradd -g cloud hadoop
# 修改用户 hadoop 的密码
passwd hadoop
将 hadoop 用户加到 sodu 列表
1、查看 /etc/sudoers 的权限
ls -l /etc/sudoers
可以看的是只读权限,如果我们要修改就必须先改变该文件的权限
2、修改权限
chmod 777 /etc/sudoers
3、将 hadoop 添加 root 权限
vim /etc/sudoers
在 root 下加入下面 hadoop 用户
4、还原权限
chmod 440 /etc/sudoers
拷贝 /etc/sudoers 到其它主机
scp /etc/sudoers hadoop02:/etc/
scp /etc/sudoers hadoop03:/etc/
scp /etc/sudoers hadoop04:/etc/
scp /etc/sudoers hadoop05:/etc/
scp /etc/sudoers hadoop06:/etc/
配置免密码登录(hadoop 用户)
切换 hadoop 用户
su hadoop
进入到当前用户的根目录
cd ~
查看所有文件
ls –la
进入.ssh 目录
cd .ssh
生产公钥和私钥(四个回车)
ssh-keygen -t rsa
执行完这个命令后,会生成两个文件 id_rsa(私钥)、id_rsa.pub(公钥)
将公钥拷贝到要免登陆的机器上
ssh-copy-id 192.168.2.101
ssh-copy-id 192.168.2.102
ssh-copy-id 192.168.2.103
ssh-copy-id 192.168.2.104
ssh-copy-id 192.168.2.105
ssh-copy-id 192.168.2.106
这时会在 192.168.2.102 主机的.ssh/ 下产生一个名为 authorized_keys 的文件,这时通过 ssh 192.168.2.102 时可以直接免登陆进入主机
如下:
同理可以给其他机器也设置免密码登录。
准备软件
在 /home/hadoop/ 下创建 cloud 文件夹,用来安装相关软件,同时所用安装包放在 cloud 下的 soft-install 文件夹下,如:
cd /home/hadoop
mkdir cloud
mkdir soft-install
在 soft-install 里上传我们需要的软件:
上传我们所需要的软件到这个目录
安装 jdk
解压
tar -zxvf jdk-8u91-linux-x64.tar.gz -C /home/hadoop/cloud/
配置环境变量
# 修改配置文件
sudo vi /etc/profile
# 在最后下添加
export JAVA_HOME=/home/hadoop/cloud/jdk1.8.0_91
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
# 刷新配置文件
source /etc/profile
将 jdk 和环境变量分别拷贝到其他主机上
可以直接将 cloud 文件夹复制过去
scp -r cloud/ hadoop02:/home/hadoop/
scp -r cloud/ hadoop03:/home/hadoop/
scp -r cloud/ hadoop04:/home/hadoop/
scp -r cloud/ hadoop05:/home/hadoop/
scp -r cloud/ hadoop06:/home/hadoop/
将环境变量拷贝到其他主机下
sudo scp /etc/profile hadoop02:/etc/
sudo scp /etc/profile hadoop03:/etc/
sudo scp /etc/profile hadoop04:/etc/
sudo scp /etc/profile hadoop05:/etc/
sudo scp /etc/profile hadoop06:/etc/
刷新环境变量
source /etc/profile
安装 zookeeper
如果不懂 Zookeeper 请参考:http://www.linuxidc.com/Linux/2013-06/85549.htm
下载地址:http://mirrors.hust.edu.cn/apache/zookeeper/
安装
前面我们已经安装的 jdk,现在我们在 hadoop04、hadoop05、hadoop06 上安装 Zookeeper
1、解压
tar -zxvf zookeeper-3.4.8.tar.gz -C /home/hadoop/cloud/
2、修改 Zookeeper 的默认配置 conf/zoo_sample.cfg
mv zoo_sample.cfg zoo.cfg
vi zoo.cfg
配置如下:
# 修改 dataDir 指向我们数据
dataDir=/home/hadoop/cloud/zookeeper-3.4.8/data
# 并在最后添加
server.1=hadoop04:2888:3888
server.2=hadoop05:2888:3888
server.3=hadoop06:2888:3888
3、在 /home/hadoop/cloud/zookeeper-3.4.8/ 目录下创建 data 文件夹
mkdir data
4、在 data 文件夹下创建 myid 文件指明本机 id
vim myid
id 分别对应为 hadoop04 为 1,hadoop05 为 2,hadoop06 为 3 后面我们再统一拷贝
5、复制 zookeeper-3.4.8 到 105、106 机器上并修改相应的 myid
scp -r zookeeper-3.4.8/ hadoop04:/home/hadoop/cloud/
scp -r zookeeper-3.4.8/ hadoop05:/home/hadoop/cloud/
scp -r zookeeper-3.4.8/ hadoop06:/home/hadoop/cloud/
启动 Zookeeper
分别在 hadoop04、hadoop05、hadoop06 上启动 Zookeeper
# 执行 /home/hadoop/cloud/zookeeper-3.4.8/bin 目录下的脚本启动
./zkServer.sh start
查看 zookeeper 的状态
./zkServer.sh status
在 bin/ 目录下运行,运行结果如下说明成功(此时至少运行 2 台)
其实我们可以找到 leader 然后 stop,会发现 Zookeeper 会立即切换 Leader
更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2017-03/142052p2.htm