Hadoop集群+Zookeeper集群+Hbase集群+Pinpoint详细部署文档

认识Pinpoint

Pinpoint是一款开源的 APM (Application Performance Management/应用性能管理)用java开发的分布式事务跟踪系统。思路基于google Dapper,通过跟踪分布式应用之间的调用来提供解决方案,以帮助分析系统的总体结构和内部模块之间如何相互联系。

  1. Pinpoint优点
  • 更清晰的了解各个应用之间的拓扑架构
  • 监控各个应用实时情况
  • 清晰了解事务的管理(代码级别)
  • 增加Pinpoint监控不需要修改一句代码,无侵入式
  • 它对性能的影响最小(只增加约3%资源利用率)
  1. Pinpoint github地址
    pinpoint https://github.com/naver/pinpoint

环境准备

  1. 机器的规划
主机名 IP地址 操作系统 安装项目
master 192.168.1.235 CentOS6.7 hbase;hadoop;zookeeper;
slave1 192.168.1.236 CentOS6.7 hbase;hadoop;zookeeper;pinpoint-collect
slave2 192.168.1.237 CentOS6.7 hbase;hadoop;zookeeper;pinpoint-web
  1. 版本的选择
软件 版本
jdk 1.8
hadoop 2.6.5
hbase 1.2.6
pinpoint-agent 1.6.2
pinpoint-collector 1.6.2
pinpoint-web 1.6.2
zookeeper 3.4.8
  1. 配置所有机器的hosts和hostname
vim /etc/sysconfig/network
对应的机器修改里面HOSTNAME=master,第二台修改成salve1,第三台修改成slave2
vim /etc/hosts 
在该文件下把三台服务器加入(分别在三台服务器都操作)
192.168.1.235       master
192.168.1.236       slave1
192.168.1.237       slave2

重启服务器生效

  1. 配置各个服务器之间免密码登录
  • 输入命令,ssh-keygen -t rsa,生成key,一直按回车
    就会在/root/.ssh生成:authorized_keys,id_rsa.pub,id_rsa 三个文件
  • 在master机器执行以下操作
cd /root/.ssh/
cat id_rsa.pub >> authorized_keys
scp id_rsa.pub root@slave1:/root/.ssh/id_rsa_master.pub  //把master的公钥拷贝到slave1
scp id_rsa.pub root@slave2:/root/.ssh/id_rsa_master.pub /把master的公钥拷贝到slave2
  • 切换到slave1机器
cd /root/.ssh/
cat id_rsa_master.pub >> authorized_keys
scp id_rsa.pub root@master:/root/.ssh/id_rsa_slave1.pub //把slave1的公钥拷贝到master
  • 切换到slave2机器
cd /root/.ssh/
cat id_rsa_master.pub >> authorized_keys
scp id_rsa.pub root@master:/root/.ssh/id_rsa_slave2.pub  //把slave2的公钥拷贝到master
  • 再切换到master机器,将slave1公钥和slave2的公钥加进authorized_keys
cat id_rsa_slave1.pub >> authorized_keys
cat id_rsa_slave2.pub >> authorized_keys
  • 在master机器执行ssh slave1 或 ssh slave2 不需要输入密码即可登录,在slave1 或 slave2 执行ssh master 也是不需要密码,那表示已经配置成功
  1. 上传需要安装的文件到服务器/root/soft目录


  2. 关闭防火墙和SELinux
关闭防火墙:
service iptables stop
chkconfig iptables off
关闭SELinux:
vi /etc/selinux/config
把SELINUX 改成 disabled  
SELINUX=disabled  
重启后永久关闭

安装JDK

解压jdk包,放到/usr/local/

cd /root/soft/
tar -zxvf jdk-8u181-linux-x64.tar.gz 
mv jdk1.8.0_181/ /usr/local/

配置环境变量

vim /etc/profile
在文件的最后面加上
export JAVA_HOME=/usr/local/jdk1.8.0_181
export JRE_HOME=/usr/local/jdk1.8.0_181/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$PATH
然后保存退出
source /etc/profile  //让环境变量生效
然后执行 java -version
[root@master jdk1.8.0_181]# java -version
java version "1.8.0_181"
Java(TM) SE Runtime Environment (build 1.8.0_181-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)
显示表示jdk配置正常

同样在其它两台机器slave1 和 slave2 执行同样的的操作

安装Hadoop集群

  1. 解压hadoop和配置环境变量(三台机器同样配置)
cd /root/soft/
tar -zxvf hadoop-2.6.5.tar.gz
mv hadoop-2.6.5 /usr/local/
vim /etc/profile
追加以下内容
export HADOOP_HOME=/usr/local/hadoop-2.6.5
export PATH=$PATH:$HADOOP_HOME/sbin
export PATH=$PATH:$HADOOP_HOME/bin
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/native"
保存退出

执行 soure /etc/profile

2.配置文件

  • 切换到hadoop配置目录
cd /usr/local/hadoop-2.6.5/etc/hadoop
  • 配置hadoop-env.sh、yarn-env.sh
vim hadoop-env.sh
export JAVA_HOME=/usr/local/jdk1.8.0_181

vim yarn-env.sh
export JAVA_HOME=/usr/local/jdk1.8.0_181
  • 配置 core-site.xml文件
<configuration>
<property>
    <name>fs.default.name</name> <!--NameNode 的URI-->
    <value>hdfs://master:9000</value> 
  </property>
  <property>
    <name>hadoop.tmp.dir</name> <!--hadoop临时文件的存放目录-->
    <value>/data/hadoop/dfs/tmp</value> <!--找个地方放就好了-->
  </property>
  <property>
    <name>io.file.buffer.size</name>
    <value>131072</value>
  </property>
  <property>
    <name>hadoop.native.lib</name>
    <value>true</value>
  </property>
</configuration>
  • 配置 hdfs-site.xml文件
<configuration>
 <property>
  <name>dfs.namenode.secondary.http-address</name>
  <value>master:9001</value>
 </property>
  <property>
   <name>dfs.namenode.name.dir</name><!--namenode持久存储名字空间及事务日志的本地文件系统路径-->
   <value>file:/data/hadoop/dfs/name</value>
 </property>
 <property>
  <name>dfs.datanode.data.dir</name><!--DataNode存放块数据的本地文件系统路径-->
  <value>file:/data/hadoop/dfs/data</value>
 </property>
 <property>
  <name>dfs.replication</name>   <!--数据需要备份的数量,不能大于集群的机器数量,默认为3-->
  <value>2</value>
 </property>
 <property>
  <name>dfs.webhdfs.enabled</name> <!--设置为true,可以在浏览器中IP+port查看-->
  <value>true</value>
 </property>
</configuration>
  • 配置mapred-site.xml文件
文件夹上没有这个文件,创建个新的文件
 cp mapred-site.xml.template mapred-site.xml
配置文件如下:
<configuration>
  <property>
        <name>mapreduce.framework.name</name> <!--mapreduce运用了yarn框架,设置name为yarn-->        
        <value>yarn</value>
  </property>
   <property>
         <name>mapreduce.jobhistory.address</name> <!--历史服务器,查看Mapreduce作业记录-->       
         <value>master:9003</value>
   </property>
   <property>
        <name>mapreduce.jobhistory.webapp.address</name>
         <value>master:9002</value>
   </property>
</configuration>
  • 配置yarn-site.xml 文件
<configuration>
<property>
   <name>yarn.nodemanager.aux-services</name><!--NodeManager上运行的附属服务,用于运行mapreduce-->
   <value>mapreduce_shuffle</value>
  </property>
  <property>
   <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
   <value>org.apache.hadoop.mapred.ShuffleHandler</value>
  </property>
  <property>
   <name>yarn.resourcemanager.address</name> <!--ResourceManager 对客户端暴露的地址-->
   <value>master:9015</value>
  </property>
  <property>
   <name>yarn.resourcemanager.scheduler.address</name><!--ResourceManager 对ApplicationMaster暴露的地址-->
   <value>master:9011</value>
  </property>
   <property> <!--ResourceManager 对NodeManager暴露的地址-->
  <name>yarn.resourcemanager.resource-tracker.address</name>        
  <value>master:9012</value> 
 </property> 
  <property>
   <name>yarn.resourcemanager.admin.address</name><!--ResourceManager 对管理员暴露的地址--> 
   <value>master:9013</value>
  </property>
  <property><!--ResourceManager 对外web暴露的地址,可在浏览器查看-->
   <name>yarn.resourcemanager.webapp.address</name>
   <value>master:9014</value>
  </property>
</configuration>
  • 配置slaves文件
vim slaves
去除默认的localhost,加入slave1、slave2,保存退出
  1. 同步文件到hadoop的各个节点
scp -r hadoop-2.6.5/ root@slave1:/usr/local/
scp -r hadoop-2.6.5/ root@slave2:/usr/local/
  1. hadoop的启动和停止
  • 在Master服务器启动hadoop,从节点会自动启动,进入Hadoop目录下,输入命令
bin/hdfs namenode -format进行hdfs格式化
sbin/start-all.sh,进行启动 也可以用 sbin/start-dfs.sh、sbin/start-yarn.sh 分别启动
在master 上输入命令:jps, 看到ResourceManager、NameNode、SecondaryNameNode进程
在slave 上输入命令:jps, 看到DataNode、NodeManager进程,出现这5个进程就表示Hadoop启动成功。
  • 在浏览器中输入http://192.168.1.235:50070查看master状态,输入http://192.168.1.235:9014查看集群状态
  • 停止hadoop,进入Hadoop目录下,输入命令:sbin/stop-all.sh,即可停止master和slave的Hadoop进程

安装Zookeeper集群

  1. 解压
cd /root/soft
tar -zxvf zookeeper-3.4.8.tar.gz 
mv zookeeper-3.4.8/ /usr/local/
  1. 建目录(三台机器执行)
mkdir -p /data/zookeeper/server
mkdir -p /data/zookeeper/log
  1. 配置环境变量(三台机器执行)
vim /etc/profile
添加
export ZOOKEEPER_HOME=/usr/local/zookeeper-3.4.8
export PATH=$PATH:$ZOOKEEPER_HOME/bin

执行source /etc/profile

  1. 修改配置文件
cd /usr/local/zookeeper-3.4.8/conf/
cp zoo_sample.cfg  zoo.cfg
vim zoo.cfg

将dataDir修改成
dataDir=/data/zookeeper/server

增加以下内容
dataLogDir=/data/zookeeper/log
server.0=master:2888:3888   
server.1=slave1:2888:3888   
server.2=slave2:2888:3888
保存退出
  1. 增加myid文件
cd /data/zookeeper/server/
touch myid
echo 0 > myid

6.同步到各个zookeeper节点

cd /usr/local
scp -r zookeeper-3.4.8/ root@slave1:/usr/local/
scp -r zookeeper-3.4.8/ root@slave2:/usr/local/
  1. 修改slave1 和 slave2 的myid文件
slave1:
touch /data/zookeeper/server/myid 
echo 1 > /data/zookeeper/server/myid 
slave2:
touch /data/zookeeper/server/myid 
echo 2 > /data/zookeeper/server/myid 
  1. 启动各个节点的zookeeper
zkServer.sh start

启动完成后,可以看各个节点的状态
[root@master bin]# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4.8/bin/../conf/zoo.cfg
Mode: leader

安装Hbase集群

  1. 解压文件
tar -zxvf hbase-1.2.6.1-bin.tar.gz
mv hbase-1.2.6.1 /usr/local/
  1. 配置环境变量(三台机器都要操作)
vim /etc/profile
添加以下内容
export  HBASE_HOME=/usr/local/hbase-1.2.6.1
export  PATH=$HBASE_HOME/bin:$PATH
保存退出
执行 source /etc/profile
  1. 修改配置文件
  • 转到hbase的配置目录
cd /usr/local/hbase-1.2.6.1/conf/
  • 修改hbase-env.sh
vim hbase-env.sh
去掉注释 export  HBASE_MANAGES_ZK=true,改成false,不用hbase自带的zookeeper,用自建的zookeeper集群
修改export JAVA_HOME=/usr/local/jdk1.8.0_181
  • 配置hbase-site.xml文件
<configuration>
        <property> <!-- hbase存放数据目录 -->
                <name>hbase.rootdir</name>
                <value>hdfs://master:9000/hbase</value><!-- 端口要和Hadoop的fs.defaultFS端口一致-->
        </property>
        <property><!-- 是否分布式部署 -->
                <name>hbase.cluster.distributed</name>
                <value>true</value>
        </property>
        <property><!--zookooper配置的dataDir属性 -->
                <name>hbase.zookeeper.property.dataDir</name>
                <value>/data/zookeeper/server</value>
        </property>
         <property>
                <name>hbase.zookeeper.property.clientPort</name>
                <value>2181</value><!-- zookeeper的端口-->
        </property>
        <property><!-- list of  zookooper -->
                <name>hbase.zookeeper.quorum</name>
                <value>master,slave1,slave2</value>
        </property>
</configuration>
  • 配置regionservers文件
    去掉默认的localhost,加入slave1、slave2,保存退出
  • 同步文件到hbase的各个集群节点
scp -r hbase-1.2.6.1/ root@slave1:/usr/local/
scp -r hbase-1.2.6.1/ root@slave2:/usr/local/
  • 启动hbase
    (1)在Hadoop已经启动成功的基础上,输入start-hbase.sh,过几秒钟便启动完成,输入jps命令查看进程是否启动成功,若 master上出现HMaster,slave上出现HRegionServer,就是启动成功了
    (2)输入hbase shell 命令 进入hbase命令模式,输入status命令可以看到如下内容,1个master,2 servers,3机器全部成功启动。
1 active master, 0 backup masters, 2 servers, 0 dead, 1.0000 average load

在浏览器输入http://192.168.1.235:16010,就可以在界面上看到hbase的配置了
(3)当要停止hbase时输入stop-hbase.sh,过几秒后hbase就会被停止了

安装Pinpoint

1.初始化数据库脚本

  • 数据库脚本在对应pinpoint版本上hbase目录,去github上面找即可找到
    https://github.com/naver/pinpoint
    数据库脚本在pinpoint-1.6.2\hbase\scripts 目录
    执行pinpoint提供的Hbase初始化语句
cd /root/soft/
hbase shell hbase-create.hbase

执行完了以后,进入Hbase

hbase shell
hbase(main):001:0>
输入"status 'detailed'"可以查看刚才初始化的表,是否存在
hbase(main):001:0> status 'detailed'

也可以登录web http://192.168.1.235:16010,来查看HBase的数据是否初始化成功

hbase.png

2.安装pinpoint-collector

  • 拷贝文件到slave1 服务器
cd /root/soft
scp apache-tomcat-8.5.32.tar.gz root@slave1:/root/soft
scp pinpoint-collector-1.6.2.war root@slave1:/root/soft
  • 切换到slave1,解压tomcat
cd /root/soft
tar -zxvf apache-tomcat-8.5.32.tar.gz
mv apache-tomcat-8.5.32 /usr/local/
  • 部署pinpoint-collector war包
    【注意:如果没有unzip命令,可以 "yum install unzip -y" 】
cd /usr/local/apache-tomcat-8.5.32/webapps/ROOT
rm -rf *
mv /root/soft/pinpoint-collector-1.6.2.war .
unzip pinpoint-collector-1.6.2.war
rm -rf pinpoint-collector-1.6.2.war
  • 修改pinpoint-collector的配置文件
cd /usr/local/apache-tomcat-8.5.32/webapps/ROOT/WEB-INF/classes
vim hbase.properties

主要修改以下的两处
hbase.client.host=master,slave1,slave2
hbase.client.port=2181
保存退出
  • 启动tomcat
cd /usr/local/apache-tomcat-8.5.32/bin
./catalina.sh start
  1. 安装pinpoint-web
  • 拷贝文件到slave2 服务器
cd /root/soft
scp apache-tomcat-8.5.32.tar.gz root@slave2:/root/soft
scp pinpoint-web-1.6.2.war root@slave2:/root/soft
  • 切换到slave2,解压tomcat
cd /root/soft
tar -zxvf apache-tomcat-8.5.32.tar.gz
mv apache-tomcat-8.5.32 /usr/local/
  • 部署pinpoint-web war包
    【注意:如果没有unzip命令,可以 "yum install unzip -y" 】
cd /usr/local/apache-tomcat-8.5.32/webapps/ROOT
rm -rf *
mv /root/soft/pinpoint-web-1.6.2.war .
unzip pinpoint-web-1.6.2.war
rm -rf pinpoint-web-1.6.2.war 
  • 部署mysql数据库
    数据库脚本:
    /usr/local/apache-tomcat-8.5.32/webapps/ROOT/WEB-INF/classes/sql 目录
    数据库名:pinpoint
    配置文件;
    /usr/local/apache-tomcat-8.5.32/webapps/ROOT/WEB-INF/classes/jdbc.properties
    修改好后保存

  • 修改pinpoint-web 配置
    vim hbase.properties
    主要修改以下的两处
    hbase.client.host=master,slave1,slave2
    hbase.client.port=2181
    保存退出

  • 启动tomcat

cd /usr/local/apache-tomcat-8.5.32/bin
./catalina.sh start
pinpoint_web.png
  1. 安装pinpoint-agent采集数据
    解压pinpoint-agent-1.6.2
    修改配置文件 pinpoint.config
vim pinpoint.config

修改profiler.collector.ip=192.168.1.236(部署了pinpoint-collect那台服务器)

在要启动的程序上带上以下的参数
-javaagent:/data/pinpoint_agent/pinpoint-bootstrap-1.6.2.jar(agent路径) -Dpinpoint.agentId=唯一属性值,不可重复 -Dpinpoint.applicationName=应用名称

  • 监控的界面


  • 调用链


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,386评论 6 479
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,939评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,851评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,953评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,971评论 5 369
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,784评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,126评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,765评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,148评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,744评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,858评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,479评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,080评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,053评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,278评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,245评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,590评论 2 343

推荐阅读更多精彩内容