Hadoop大数据部署
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
上一篇: CentOS安装mysql5.6
下一篇: Linux-服务器创建swap交换分区
推荐阅读
-
腾讯云三大自研数据库之一 TBase 开源后首次重磅升级,复杂查询性能最高提升十倍
-
数据库三大范式详解
-
为什么数据分析一般用到java,而不是使用hadoop,flume,hive的api使用php来处理相关业务?
-
Eclipse中部署 YARN hadoop2.3.0
-
为什么数据分析一般用到java,而不是使用hadoop,flume,hive的api使用php来处理相关业务?
-
RSA2013关注大数据 新增七大全新议题
-
Mac部署hadoop3(伪分布式)
-
hadoop 2.6.0 伪分布式部署安装的实例教程
-
中国计算机大会论坛上专家提出:“大数据”蕴含大价值
-
PHP的Laravel框架结合MySQL与Redis数据库的使用部署