hadoop分布式安装
来源:互联网 发布:淘宝联盟高佣金通过 编辑:程序博客网 时间:2024/06/10 20:53
本文约定:
CentOS环境安装 CentOS-6.5-x86_64-bin-DVD.iso
三台机器分别为hadoop01、hadoop02、hadoop03
版本:hadoop-2.6.4 jdk1.8.0_112 zookeeper-3.4.6
安装目录:/opt 下
集群的部署情况
hadoop01 192.168.100.100 jdk、hadoop、zknamenode、zk、journade、zkfc
hadoop02 192.168.100.101 jdk、hadoop、zknamenode、zk、journade、zkfc rm、nm、datanode
hadoop03 192.168.100.102 jdk、hadoop、zkzk、journade、rm、nm、datanode
zk:zookeeperrm:resourcemanager nm:nodemanager
安装linux环境
一、防火墙1、关闭防火墙
]# service iptables stop
2、从开机启动项中关闭防火墙
]# chkconfig iptables off/on-->打开
3、查看防火墙状态
]# service iptables status
4、查看防火墙的开机状态
]# chkconfig --list | grep iptables
二、主机名
]# vim /etc/sysconfig/network
修改其中的host
HOSTNAME=hadoop01
修改IP地址
选择手动manual
添加IP地址
IP:192.168.100.101
NetMask:255.255.255.0
GatWay:192.168.100.2
DNS: 124.207.160.106,219.239.26.42
重启服务:service network restart
配置域名映射:
]# vim /etc/hosts
加入一行内容:
192.168.100.101hadoop01
同时在windows的域名映射文件C:/windows/System32/drivers/etc/hosts中加入:
192.168.100.101hadoop01
关闭selinux
vim /ect/selinux/config
设置selinux=disabled
1、修改linux的启动模式(可以略过本步骤)
vim /etc/inittab
将模式从5修改为3
id:5:initdefault:---》id:3:initdefault:
重启linux系统
配置ssh免密码登录:
配置各个机器间的免密码登录
在三台机器上面都生成相应的密码
ssh-keygen -t rsa
在hadoop01上面的操作:
ssh-copy-id -i root@hadoop02
ssh-copy-id -i root@hadoop03
在hadoop02上面的操作:
ssh-keygen -t rsa
ssh-copy-id -i root@hadoop02
ssh-copy-id -i root@hadoop03
在hadoop03上面的操作:
ssh-keygen -t rsa
ssh-copy-id -i root@hadoop03
安装jdk
1、安装JDK
当前目录:/opt
1°、解压
opt]# tar -zxvf soft/jdk-8u112-linux-x64.tar.gz
2°、重命名:
opt]# mv jdk1.8.0_112/ jdk
3°、将JAVA_HOME配置到linux的环境变量里面:
vim /etc/profile.d/hadoop-etc.sh
加入以下内容:
export JAVA_HOME=/opt/jdk
export PATH=$JAVA_HOME/bin:$PATH
4°、让环境变量生效:
source /etc/profile.d/hadoop-etc.sh
5°、测试jdk是否安装成功:
java -version
拷贝至hadoop02 和hadoop03上
scp -r jdk root@hadoop02:/opt
scp -r jdk root@hadoop03:/opt
ZooKeeper的搭建:
修改主机名
vim /etc/sysconfig/network
同时在这三台其中的/etc/hosts文件中把
192.168.100.101hadoop01
192.168.100.102hadoop02
192.168.100.103hadoop03
hadoop01上解压:tar -zxvf zookeeper-3.4.6.tar.gz -C /opt
mv zookeeper-3.4.6 zookeeper
在/opt/zookeeper/conf下 cp zoo_sample.cfg zoo.cfg配置
dataDir=/opt/zookeeper/data(需手动创建该目录)
server.101=hadoop01:2888:3888
server.102=hadoop02:2888:3888
server.103=hadoop03:2888:3888
再在/opt/zookeeper/data下 touch myid -------> echo 101 > myid
添加环境变量
vim /etc/profile.d/hadoop-etc.sh
加入以下内容:
export ZOOKEEPER_HOME=/opt/zookeeper
export PATH=$ZOOKEEPER_HOME/bin:$PATH
拷贝至hadoop02 和hadoop03上
scp -r zookeeper root@hadoop02:/opt
scp -r zookeeper root@hadoop03:/opt
再将相对应机器上的myid修改为102和103hadoop01/02/03需要使环境变量生效
再每台机器上启动zk服务
zkServer.sh start
启动之后可以通过zkServer.sh status查看每一台zk的角色
有一个leader和两个follower
Hadoop的安装
hadoop01机器上
1°、解压:
]# tar -zxvf /opt/soft/hadoop-2.6.4.tar.gz -C /opt/
2°、重命名:
opt]# mv hadoop-2.6.4/ hadoop
3°、添加hadoop相关命令到环境变量中
vim /etc/profile.d/hadoop-eco.sh
加入以下内容:
export HADOOP_HOME=/opt/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
3-1 生效
source /etc/profile.d/hadoop-eco.sh
4°、创建数据存储目录:(mkdir -p)
1) NameNode 数据存放目录: /opt/hadoop-repo/name
2) SecondaryNameNode 数据存放目录: /opt/hadoop-repo/secondary
3) DataNode 数据存放目录: /opt/hadoop-repo/data
4) 临时数据存放目录: /opt/hadoop-repo/tmp
5°、配置
1°、hadoop-env.sh---->hadoop运行环境配置
修改JAVA_HOME
export JAVA_HOME=/opt/jdk
2°、yarn-env.sh---->yarn的运行环境配置
修改JAVA_HOME
export JAVA_HOME=/opt/jdk
3°、slaves(删除原有的localhost)---->是datanode和nodemanager这些从节点的配置项
添加一下两行内容 为的就是能够让nodemanager操作本地datanode中的数据,而尽量不要跨机器):
hadoop02
hadoop03
4°、hdfs-site.xml
<configuration>
<!--指定hdfs的nameservice为ns1,需要和core-site.xml中的保持一致 -->
<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:9000</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:9000</value>
</property>
<!-- nn2的http通信地址 -->
<property>
<name>dfs.namenode.http-address.ns1.nn2</name>
<value>hadoop02:50070</value>
</property>
<!-- 指定NameNode的edits数据在JournalNode上的存放位置 -->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://hadoop01:8485;hadoop02:8485;hadoop03:8485/ns1</value>
</property>
<!-- 指定JournalNode在本地磁盘存放数据的位置 -->
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/opt/hadoop-repo/journal</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/opt/hadoop-repo/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/opt/hadoop-repo/data</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>/root/.ssh/id_rsa</value>
</property>
<!-- 配置sshfence隔离机制超时时间 -->
<property>
<name>dfs.ha.fencing.ssh.connect-timeout</name>
<value>30000</value>
</property>
</configuration>
5°、配置core-site.xml
<configuration>
<!-- 指定hdfs的nameservice为ns1 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://ns1</value>
</property>
<!-- 指定hadoop临时目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop-repo/tmp</value>
</property>
<!-- 指定zookeeper地址 -->
<property>
<name>ha.zookeeper.quorum</name>
<value>hadoop01:2181,hadoop02:2181,hadoop03:2181</value>
</property>
</configuration>
6°、配置mapred-site.xml
<configuration>
<!-- mr依赖的框架名称 yarn-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!-- mr转化历史任务的rpc通信地址-->
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop02:10020</value>
</property>
<!-- mr转化历史任务的http通信地址-->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop02:19888</value>
</property>
<!-- 会在hdfs的根目录下面创建一个history的文件夹,存放历史任务的相关运行情况-->
<property>
<name>yarn.app.mapreduce.am.staging-dir</name>
<value>/history</value>
</property>
<!-- map和reduce的日志级别-->
<property>
<name>mapreduce.map.log.level</name>
<value>INFO</value>
</property>
<property>
<name>mapreduce.reduce.log.level</name>
<value>INFO</value>
</property>
</configuration>
7°、配置yarn-site.xml
<configuration>
<!-- 开启RM高可靠 -->
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
<!-- 指定RM的cluster id -->
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>yrc</value>
</property>
<!-- 指定RM的名字 -->
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
</property>
<!-- 分别指定RM的地址 -->
<property>
<name>yarn.resourcemanager.hostname.rm1</name>
<value>hadoop02</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>hadoop03</value>
</property>
<!-- 指定zk集群地址 -->
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>hadoop01:2181,hadoop02:2181,hadoop03:2181</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
8°、格式化hadoop文件系统
hdfs namenode -format
表示成功:Storage directory /opt/hadoop-repo/name has been successfully formatted.
9°、拷贝在hadoop01上面配置的hadoop文件
scp -r hadoop-repo/ root@hadoop02:/opt/
scp -r hadoop-repo/ root@hadoop03:/opt/
scp -r /opt/hadoop root@hadoop02:/opt
scp -r /opt/hadoop root@hadoop03:/opt
启动Hadoop集群
1°、确保zk集群是启动的(每一台都启动 zkServer.sh start)
2°、启动journalnode集群(每一台都要启动)
启动命令hadoop-daemon.sh start journalnode
可以通过jps查看到多了一个进程JournalNode
3°、对namenode进行格式化
在配置了NameNode机器中找一台,进行格式化,只格式化一次即可,
然后将生成的NameNode自身的元数据信息拷贝到另外一台NameNode的对应目录中区dfs.namenode.name.dir
在hadoop01上面执行格式化:
hdfs namenode -format
成功标志:Storage directory /opt/hadoop-repo/name has been successfully formatted.
将namenode元数据信息拷贝到uplooking02上面去:
scp -r hadoop-repo/name/* root@hadoop02:/opt/hadoop-repo/name/
4°、在namenode对应的任何一台机器上面格式化zkfc,目的在zk中创建维护namenode状态的目录
hdfs zkfc -formatZK
5°、分别启动hdfs和yarn
在hadoop01上面执行如下命令:
start-dfs.sh
在hadoop02上面执行如下命令:
start-yarn.sh(启动ResourceManager和NodeManager)
在hadoop03上面执行如下命令:
yarn-daemon.sh start resourcemanager
- Hadoop分布式安装
- Hadoop简易分布式安装
- Hadoop分布式安装
- Hadoop 伪分布式安装
- hadoop 伪分布式安装
- Hadoop 伪分布式安装
- hadoop分布式安装
- hadoop 分布式文件系统安装
- Hadoop分布式安装
- HADOOP伪分布式安装
- hadoop完全分布式安装
- hadoop分布式安装过程
- hadoop 安装 分布式模式
- hadoop伪分布式安装
- hadoop 分布式安装
- Hadoop伪分布式安装
- hadoop分布式安装
- Hadoop伪分布式安装
- 数据结构编程笔记十:第三章 栈和队列 循环队列的实现
- 读书笔记_CLR.via.c#第五章_基元类型_引用类型_值类型
- 王爽 《汇编语言》 读书笔记 三 寄存器(内存访问)
- hdu6152
- xShell快捷键
- hadoop分布式安装
- 基于webpack的angluar2项目搭建
- 对测试转开发的一些想法
- 在android 上,使用Opencv3.0实现图像无缝拼接,Fast查找特征点,BruteForce进行匹配
- 读书笔记_CLR.via.c#第十四章_字符,字符串和文本处理
- MYSQL 最近知识总结(4)
- 编译、链接学习笔记(二)目标文件的构成
- 傅里叶变换
- 稀疏矩阵之python实现