Hadoop大数据部署

一. 系统环境配置:

1. 关闭防火墙,selinux

关闭防火墙:

systemctl stop firewalld
systemctl disable firewalld

设置selinux为disable

# cat /etc/selinux/config
SELINUX=disabled

2. 配置ntp时间服务器

# yum -y install ntpdate
# crontab -l
*/5 * * * * /usr/sbin/ntpdate 192.168.1.1 >/dev/null 2>&1

将IP地址换成可用的时间服务器IP

3. 修改系统限制

# cat /etc/security/limits.conf
* soft nproc 100000
* hard nproc 100000
* soft nofile 102400
* hard nofile 102400
hadoop soft nproc 100000
hadoop hard nproc 100000
hadoop soft nofile 102400
hadoop hard nofile 102400

4. 创建hadoop用户

groupadd -g 1002 hadoop
useradd -u 1002 -g hadoop hadoop

5. 配置hosts

[root@hadoop2 ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.24.43 hadoop1
192.168.24.216 hadoop2
192.168.24.7 hadoop3

6. 分发公钥

# su - hadoop
$ ssh-keygen
$ ssh-copy-id hadoop@hadoop1
$ ssh-copy-id hadoop@hadoop2
$ ssh-copy-id hadoop@hadoop3

保证某一个节点上都有所有的节点的公钥。

7. 安装jdk

# yum -y install jdk-8u171-linux-x64.rpm
# java -version
java version "1.8.0_171"
Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)

8. 安装SCALA

Scala 是一门多范式(multi-paradigm)的编程语言,设计初衷是要集成面向对象编程和函数式编程的各种特性。Scala 运行在Java虚拟机上,并兼容现有的Java程序。Scala 源代码被编译成Java字节码,所以它可以运行于JVM之上,并可以调用现有的Java类库。

cd /app
tar -zxvf /home/Software/scala-2.11.12.tgz -C .
mv scala-2.11.12 scala

9. 安装snappy

Snappy是一个压缩/解压缩库。它的目标不是最大压缩,也不与任何其他压缩库兼容; 相反,它的目标是非常高的速度和合理的压缩。例如,与最快的zlib模式相比,对于大多数输入,Snappy的速度要快一个数量级,但生成的压缩文件大小要高20%到100%。

yum -y install automake autoconf libtool openssl openssl-devel gcc gcc-c++
tar -zxvf snappy-1.1.3.tar.gz
cd snappy-1.1.3
./autogen.sh
./configure
make & make install

10. 安装lzo以及lzop

LZO 是一个用 ANSI C 语言编写的无损压缩库。他能够提供非常快速的压缩和解压功能。解压并不需要内存的支持。即使使用非常大的压缩比例进行缓慢压缩出的数据,依然能够非常快速的解压。LZO遵循GNU 的GPL 使用许可。

LZO 非常适合进行数据的实时压缩解压处理,这就是说他更关心操作速度,而不是压缩比例。

LZO 使用 ANSI C 语言编写,并且压缩后的数据也被设计为可以跨平台使用的格式。

tar -xvf lzo-2.06.tar.gz
cd lzo-2.06
./configure --enable-shared
make && make install

lzop是使用lzo库写的一个程序,通过shell命令直接可以压缩、解压缩文件。

tar -xvf lzop-1.03.tar.gz
cd lzop-1.03
./configure
make && make install

二. Zookeeper 集群

Zookeeper有三种安装模式,单机模式:单节点安装standalones模式;伪集群模式:在一台主机上启动多个zookeeper的实例;集群模式:需要奇数台服务器,至少3台,每台启动一个zookeeper实例。

1. 解压安装Zookeepr

su - hadoop
mkdir /app
tar -zxvf zookeeper-3.4.10.tar.gz -C /app/
cd /app
sudo mv zookeeper-3.4.10 zookeeper
mkdir data logs

2. 修改zoo.cfg文件

[hadoop@hadoop1 ~]$ vim /app/zookeeper/conf/zoo.cfg
tickTime=2000
initLimit=20
syncLimit=10
dataDir=/app/zookeeper/data
dataLogDir=/app/zookeeper/logs
clientPort=2181
server.1=hadoop1:2888:3888
server.2=hadoop2:2888:3888
server.3=hadoop3:2888:3888

initLimit:初始化链接时,follower和leader之间的最长心跳时间,20*2000即40秒

syncLimit:leader和follower之间发送消息, 请求和应答的最大时间长度,即20秒

server.X=A:B:C 其中X是一个数字, 表示这是第几号server. A是该server所在的IP地址. B:配置该server和集群中的leader交换消息所使用的端口. C:配置选举leader时所使用的端口

3. 修改myid

/app/zookeeper/data/下增加一个myid文件,把前面配置文件里server.X中的X写入里面。

[hadoop@hadoop1 ~]$ cat /app/zookeeper/data/myid
1

4. 修改zookeeper的日志输出路径:

修改/app/zookeeper/bin/zkEnv.sh下的ZOO_LOG_DIR改为配置文件里写的路径/app/zookeeper/logs

if [ "x${ZOO_LOG_DIR}" = "x" ]
then
ZOO_LOG_DIR="/app/zookeeper/logs"
fi

5. 启动并调试zookeeper

启动:

$ zkServer.sh start

查看状态:

$ zkServer.sh status

[hadoop@hadoop1 ~]$ zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /app/zookeeper/bin/../conf/zoo.cfg
Mode: follower

二. Hadoop HA安装

hadoop分为1.0和2.0两个大版本,具体的区别自行查找。本文主要使用的是hadoop2.0。hadoop2.0的生态系统主要包括以下核心项目:HDFS YARN MapReduce。

1. 解压安装

sudo tar -zxvf hadoop-2.9.1.tar.gz -C /app/
$ pwd
/app/hadoop/etc/hadoop
$ ls
capacity-scheduler.xml httpfs-env.sh mapred-env.sh
configuration.xsl httpfs-log4j.properties mapred-queues.xml.template
container-executor.cfg httpfs-signature.secret mapred-site.xml
core-site.xml httpfs-site.xml mapred-site.xml.template
hadoop-env.cmd kms-acls.xml slaves
hadoop-env.sh kms-env.sh ssl-client.xml.example
hadoop-metrics2.properties kms-log4j.properties ssl-server.xml.example
hadoop-metrics.properties kms-site.xml yarn-env.cmd
hadoop-policy.xml log4j.properties yarn-env.sh
hdfs-site.xml mapred-env.cmd yarn-site.xml

2. 修改hadoop的环境变量(hadoop-env.sh)

export HADOOP_HEAPSIZE=16196
export JAVA_HOME=/usr/java/1.8.0_171
export JAVA_LIBRARY_PATH=/app/hadoop-2.9.1/lib/native
export HADOOP_OPTS="-Djava.library.path=/app/hadoop-2.9.0/lib/native"
注意:如果在Centos 6环境中变量名后面的路径必须使用双引号,否则后面启动的时候报错找不到该变量。

3. 修改core-site.xml

<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://myhadoop</value>
</property>
<property>
<name>ha.zookeeper.quorum</name>
<value>hadoop1:2181,hadoop2:2181,hadoop3:2181</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/app/hadoop/tmp</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<property>
<name>io.compression.codecs</name> <value>org.apache.hadoop.io.compress.GzipCodec,org.apache.hadoop.io.compress.DefaultCodec,com.hadoop.compression.lzo.LzoCodec,com.hadoop.compression.lzo.LzopCodec,org.apache.hadoop.io.compress.BZip2Codec</value>
</property>
<property>
<name>io.compression.codec.lzo.class</name>
<value>com.hadoop.compression.lzo.LzoCodec</value>
</property>
<property>
<name>hadoop.proxyuser.hadoop.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.hadoop.groups</name>
<value>*</value>
</property>
</configuration>

3. 修改hdfs-site.xml

<configuration>
<property>
<name>dfs.nameservices</name>
<value>myhadoop</value>
</property>
<property>
<name>dfs.ha.namenodes.myhadoop</name>
<value>nn1,nn2</value>
</property>
<property>
<name>dfs.namenode.rpc-address.myhadoop.nn1</name>
<value>hadoop1:8020</value>
</property>
<property>
<name>dfs.namenode.rpc-address.myhadoop.nn2</name>
<value>hadoop2:8020</value>
</property>
<property>
<name>dfs.namenode.http-address.myhadoop.nn1</name>
<value>hadoop1:50070</value>
</property>
<property>
<name>dfs.namenode.http-address.mycluster.nn2</name>
<value>hadoop2:50070</value>
</property>
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/app/hadoop/qjournal</value>
</property>
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://hadoop1:8485;hadoop2:8485;hadoop3:8485/myhadoop</value>
</property>
<property>
<name>dfs.client.failover.proxy.provider.myhadoop</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<property>
<name>dfs.ha.fencing.methods</name>
<value>sshfence</value>
</property>
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/home/hadoop/.ssh/id_rsa</value>
</property>
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/app/hadoop/dfs/name,file:/hadoop/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/app/hadoop/dfs/data</value>
</property>
<property>
<name>dfs.datanode.handler.count</name>
<value>100</value>
</property>
<property>
<name>dfs.namenode.handler.count</name>
<value>1024</value>
</property>
<property>
<name>dfs.datanode.max.xcievers</name>
<value>8096</value>
</property>
</configuration>

3. 修改yarn-site.xml

<configuration>
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>cluster1</value>
</property>
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm1</name>
<value>hadoop1</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>hadoop2</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address.rm1</name>
<value>hadoop1:8088</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address.rm2</name>
<value>hadoop2:8088</value>
</property>
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>hadoop1:2181,hadoop2:2181,hadoop3:2181</value>
</property>
</configuration>

5. 修改mapred-site.xml

<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop1:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop1:19888</value>
</property>
<property>
<name>mapreduce.job.tracker</name>
<value>hdfs://hadoop1:8021</value>
</property>
<property>
<name>mapreduce.reduce.shuffle.parallelcopies</name>
<value>50</value>
</property>
<property>
<name>mapreduce.map.java.opts</name>
<value>-Xmx4096M</value>
</property>
<property>
<name>mapreduce.reduce.java.opts</name>
<value>-Xmx8192M</value>
</property>
<property>
<name>mapreduce.map.memory.mb</name>
<value>4096</value>
</property>
<property>
<name>mapreduce.reduce.memory.mb</name>
<value>8192</value>
</property>
<property>
<name>mapreduce.map.output.compress</name>
<value>true</value>
</property>
<property>
<name>mapred.child.env</name>
<value>JAVA_LIBRARY_PATH=/app/hadoop-2.9.1/lib/native</value>
</property>
<property>
<name>mapreduce.map.output.compress.codec</name>
<value>com.hadoop.compression.lzo.LzoCodec</value>
</property>
<property>
<name>mapreduce.task.io.sort.mb</name>
<value>512</value>
</property>
<property>
<name>mapreduce.task.io.sort.factor</name>
<value>100</value>
</property>
<property>
<name>mapred.reduce.tasks</name>
<value>4</value>
</property>
<property>
<name>mapred.map.tasks</name>
<value>20</value>
</property>
<property>
<name>mapred.child.java.opts</name>
<value>-Xmx4096m</value>
</property>
<property>
<name>mapreduce.reduce.shuffle.memory.limit.percent</name>
<value>0.1</value>
</property>
<property>
<name>mapred.job.shuffle.input.buffer.percent</name>
<value>0.6</value>
</property>
</configuration>

6. 修改yarn-env.sh环境,添加环境变量

在yarn-env.sh文件后面设置yarn heap大小。追加下面这句

YARN_HEAPSIZE=4000

添加环境变量:

$ tail .bash_profile
export JAVA_HOME=/usr/java/jdk1.8.0_171-amd64
export HADOOP_HOME=/app/hadoop
export ZOOKPEER_HOME=/app/zookeeper
export LIBRAY_PATH=$HADOOP_HOME/lib/native
export SCALA_HOME=/app/scala
export PATH=$JAVA_HOME/bin:$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$ZOOKPEER_HOME/bin:$SCALA_HOME/bin

7 集群的启动与监控

安装psmisc,否则不能实现自动切换:

yum -y install psmisc

启动集群:

# 1. 在所有zookeeper节点上执行
zkServer.sh start
# 1.1 在leader上执行,用zookeeper进行初始化,这将会创建一个znode在zookeeper上内部实现自动备援系统。
hdfs zkfc -formatZK
# 1.2 If you are setting up a fresh HDFS cluster, you should first run the format command,on one of NameNodes.
hdfs namenode -format
# 2. 自动启动hdfs服务
start-dfs.sh
# 2.1 注意:如何你想要手动的管理你的集群服务,你必须通过zkfc deamon来启动你的namenode,命令如下:
hadoop-daemon.sh --script hdfs start zkfc
# 3. 在hadoop启动Resourcemanager
start-yarn.sh
# 4. 在另一个节点上启动standby resourcemanager
yarn-daemon.sh start resourcemanager # 其他命令:
# 启停namenode
hadoop-daemon.sh start/stop namenode
# 启停datanode
hadoop-daemon.sh start/stop namenode

查看状态:

# 查看各个节点
$ jps
2049 NameNode
2611 DFSZKFailoverController
3465 ResourceManager
1727 QuorumPeerMain
2159 DataNode
2415 JournalNode
3199 NodeManager
3695 Jps
# 查看HDFS集群namedate节点的状态
hdfs haadmin -getAllServiceState
# 查看nn1/nn2的状态
hdfs haadmin -getServiceState nn1
hdfs haadmin -getServiceState nn2
# 查看resourcemanager集群的主备状态
$ yarn rmadmin -getAllServiceState
hadoop1:8033 active
hadoop2:8033 standby
# 查看resourcemanager的集群各个节点的状态
$ yarn rmadmin -getServiceState rm1
active
$ yarn rmadmin -getServiceState rm2
standby

hadoop集群监控相关的端口:

NameNode: http://namenode_host:50070
ResourceManager: http://resourcemanager_host:8088
MapReduce JobHistory Server: http://jobistoryserver_host:19888

Hadoop大数据部署的更多相关文章

  1. 单机,伪分布式,完全分布式-----搭建Hadoop大数据平台

    Hadoop大数据——随着计算机技术的发展,互联网的普及,信息的积累已经到了一个非常庞大的地步,信息的增长也在不断的加快.信息更是爆炸性增长,收集,检索,统计这些信息越发困难,必须使用新的技术来解决这 ...

  2. 超人学院Hadoop大数据资源分享

    超人学院Hadoop大数据资源分享 http://bbs.superwu.cn/forum.php?mod=viewthread&tid=770&extra=page%3D1 很多其它 ...

  3. 超人学院Hadoop大数据技术资源分享

    超人学院Hadoop大数据技术资源分享 http://bbs.superwu.cn/forum.php?mod=viewthread&tid=807&fromuid=645 很多其它精 ...

  4. 超人学院Hadoop大数据资源共享

    超人学院Hadoop大数据资源共享-----数据结构与算法(java解密版) http://yunpan.cn/cw5avckz8fByJ   訪问password b0f8 很多其它精彩内容请关注: ...

  5. hadoop大数据技术架构详解

    大数据的时代已经来了,信息的爆炸式增长使得越来越多的行业面临这大量数据需要存储和分析的挑战.Hadoop作为一个开源的分布式并行处理平台,以其高拓展.高效率.高可靠等优点越来越受到欢迎.这同时也带动了 ...

  6. 【HADOOP】| 环境搭建:从零开始搭建hadoop大数据平台(单机/伪分布式)-下

    因篇幅过长,故分为两节,上节主要说明hadoop运行环境和必须的基础软件,包括VMware虚拟机软件的说明安装.Xmanager5管理软件以及CentOS操作系统的安装和基本网络配置.具体请参看: [ ...

  7. (第1篇)什么是hadoop大数据?我又为什么要写这篇文章?

    摘要: hadoop是什么?hadoop是如何发展起来的?怎样才能正确安装hadoop环境? 这些天,有很多人咨询我大数据相关的一些信息,觉得大数据再未来会是一个朝阳行业,希望能尽早学会.入行,借这个 ...

  8. 《Hadoop大数据架构与实践》学习笔记

    学习慕课网的视频:Hadoop大数据平台架构与实践--基础篇http://www.imooc.com/learn/391 一.第一章 #,Hadoop的两大核心:     #,HDFS,分布式文件系统 ...

  9. 数据仓库和Hadoop大数据平台有什么差别?

    广义上来说,Hadoop大数据平台也可以看做是新一代的数据仓库系统, 它也具有很多现代数据仓库的特征,也被企业所广泛使用.因为MPP架构的可扩展性,基于MPP的数据仓库系统有时候也被划分到大数据平台类 ...

随机推荐

  1. PHP代码审计

    Preface 这篇文章的内容会不断的充实和丰富,前期会增加一些之前爆出漏洞的复现过程,来丰富自己实际代码审计经验,后期如果能挖掘出新的漏洞,便更好. 代码审计之SQL注入:BlueCMSv1.6 s ...

  2. 使用Rapidxml读取xml文件

    现有xml文件如上,写在一个string中.需要获取节点上元素的类别和属性信息,并存储到结构体表中. 结构体如下: 得到的结果如下:

  3. IE浏览器getElementsByTagName方法的兼容问题

    今天发现了一个非常可笑的IE兼容问题,环境是IE8,调用getElementsByTagName方法搜索元素,结果集居然自动识别元素的id作为键名,去掉元素定义id才能按正常的数字索引返回. 因为网页 ...

  4. PHP采用Cookie实现 购物车

    先来看一下逻辑分析图:

  5. flume原理

    1. flume简介 flume 作为 cloudera 开发的实时日志收集系统,受到了业界的认可与广泛应用.Flume 初始的发行版本目前被统称为 Flume OG(original generat ...

  6. python之文件操作(基础)

    文件操作作为python基础中的重点,必须要掌握. 1.默认我们在本地电脑E盘新建wp.txt文件进行测试,文件内容如下设置. 2.进行代码编写: f=open("E://wp.txt&qu ...

  7. LESS的简单介绍

    对于一些布局和样式比较复杂的网页,如何构建一个健康.优雅的CSS文件是一个很令人苦恼的问题.在书写静态页面的时候,我总是遇到布局结构累赘和重复样式复用性不高的问题,当然,对于这些问题归根究底还是要多联 ...

  8. 爬虫值requests库

    requests简介 简介 Requests是用python语言基于urllib编写的,采用的是Apache2 Licensed开源协议的HTTP库 ,使用起来比urllib简洁很多 因为是第三方库, ...

  9. [ 搭建Redis本地服务器实践系列一 ] :图解CentOS7安装Redis

    上一章 [ 搭建Redis本地服务器实践系列 ] :序言 作为开场白介绍了下为什么要写这个系列,从这个章节我们就开始真正的进入正题,开始搭建我们本地的Redis服务器.那么关于Redis的基本概念,什 ...

  10. SpringMVC表当重复提交

    最近公司上线,有同志进行攻击,表当防重复提交也没有弄,交给我 ,本人以前也没弄过,知道大概的思路,但是那样实在是太麻烦了,虽然后面试过使用过滤器加拦截器实现,不过还是有点小麻烦. 后来在网上搜索后发现 ...