GVKun编程网logo

zookeeper部署笔记(zookeeper 部署)

33

在这里,我们将给大家分享关于zookeeper部署笔记的知识,让您更了解zookeeper部署的本质,同时也会涉及到如何更有效地14.zookeeper部署、4节点sheepdog集群+3节点zook

在这里,我们将给大家分享关于zookeeper部署笔记的知识,让您更了解zookeeper 部署的本质,同时也会涉及到如何更有效地14. zookeeper部署、4节点sheepdog集群+3节点zookeeper部署和配置、centos6使用docker部署zookeeper操作示例、Hadoop+Zookpeeper+Hbase+Nutch 2.3+Solr4.8.1部署笔记的内容。

本文目录一览:

zookeeper部署笔记(zookeeper 部署)

zookeeper部署笔记(zookeeper 部署)

1.上传zk安装包

2.解压

3.配置(先在一台节点上配置)
    3.1添加一个zoo.cfg配置文件
    $ZOOKEEPER/conf
    mv zoo_sample.cfg zoo.cfg
    zookeeper的默认配置文件为zookeeper/conf/zoo_sample.cfg,需要将其修改为zoo.cfg。其中各配置项的含义,解释如下:

        tickTime:CS通信心跳时间
        Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。tickTime以毫秒为单位。
        tickTime=2000  

        initLimit:LF初始通信时限
        集群中的follower服务器(F)与leader服务器(L)之间初始连接时能容忍的最多心跳数(tickTime的数量)。
        initLimit=5  

        syncLimit:LF同步通信时限
        集群中的follower服务器与leader服务器之间请求和应答之间能容忍的最多心跳数(tickTime的数量)。
        syncLimit=2  
         
        dataDir:数据文件目录
        Zookeeper保存数据的目录,默认情况下,Zookeeper将写数据的日志文件也保存在这个目录里。
        dataDir=/home/michael/opt/zookeeper/data  

        clientPort:客户端连接端口
        客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。
        clientPort=2181 

        服务器名称与地址:集群信息(服务器编号,服务器地址,LF通信端口,选举端口)
        这个配置项的书写格式比较特殊,规则如下:
        server.N=YYY:A:B 

        server.1=ldaye05:2888:3888
        server.2=ldaye06:2888:3888
        server.3=ldaye07:2888:3888
    
    3.2修改配置文件(zoo.cfg)
        dataDir=/ldaye/zookeeper-3.4.5/data
        
        server.5=ldaye05:2888:3888
        server.6=ldaye06:2888:3888
        server.7=ldaye07:2888:3888
    
    3.3在(dataDir=/ldaye/zookeeper-3.4.5/data)创建一个myid文件,里面内容是server.N中的N(server.2里面内容为2)
        echo "5" > myid
    
    3.4将配置好的zk拷贝到其他节点 
        scp -r /ldaye/zookeeper-3.4.5/ ldaye06:/ldaye/
        scp -r /ldaye/zookeeper-3.4.5/ ldaye07:/ldaye/
    
    3.5注意:在其他节点上一定要修改myid的内容
        在ldaye06应该讲myid的内容改为6 (echo "6" > myid)
        在ldaye07应该讲myid的内容改为7 (echo "7" > myid)
        
4.启动集群
    分别启动zk
        ./zkServer.sh start
    
 

14. zookeeper部署

14. zookeeper部署

1.配置java

cd /opt/src/ && wget http://file.zhidianjh.com/k8s/day3/jdk-8u221-linux-x64.tar.gz
mkdir /usr/java && tar xf jdk-8u221-linux-x64.tar.gz -C /usr/java/
ln -s /usr/java/jdk1.8.0_221/ /usr/java/jdk

 vim /etc/profile
export JAVA_HOME=/usr/java/jdk
export PATH=$JAVA_HOME/bin:$JAVA_HOME/bin:$PATH
export CLAsspATH=$CLAsspATH:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar

source /etc/profile
java -version

2.部署zk集群

wget http://file.zhidianjh.com/k8s/day3/zookeeper-3.4.14.tar.gz
mkdir -pv /data/zookeeper/data /data/zookeeper/logs
 tar xf zookeeper-3.4.14.tar.gz -C /opt/
ln -s /opt/zookeeper-3.4.14/ /opt/zookeeper
cd /opt/zookeeper/conf
mv zoo_sample.cfg zoo_sample.cfg_bak

vim zoo.cfg
tickTime=2000
initLimit=10
synclimit=5
dataDir=/data/zookeeper/data
dataLogDir=/data/zookeeper/logs
clientPort=2181
server.1=zk1.od.com:2888:3888
server.2=zk2.od.com:2888:3888
server.3=zk3.od.com:2888:3888

cat /data/zookeeper/data/myid 
1

3.启动集群,查看集群配置

./zkServer.sh start
./zkServer.sh status

4节点sheepdog集群+3节点zookeeper部署和配置

4节点sheepdog集群+3节点zookeeper部署和配置

1、首先在4个存储节点中的3个节点上安装3节点zookeeper,详见 http://blog.csdn.NET/u010855924/article/details/52847308

2、第四个存储节点仅仅需要rpm -ivh zookeeper-3.4.6-redhat6.4.x86_64.rpm即可,不需要配置和启动,原因在于安装sheepdog的时候./configure需要指定sheepdog的zookeeper,否则执行./configure --enable-zookeeper --disable-corosync不通过

3、开始编译安装sheepdog

3.1 首先安装以下安装包,否则编译sheepdog时不通过

yum install automake libtool -y   //./autogen.sh时需要这两个工具,否则不能生成configure文件

rpm -ivhuserspace-rcu-0.7.9-1.el7.x86_64.rpm       //以下三个安装包在make时需要,否则make不通过

rpm -ivhuserspace-rcu-devel-0.7.9-1.el7.x86_64.rpm

rpm -ivhyasm-1.2.0-4.el7.x86_64.rpm

3.2 进入sheepdog目录,开始安装

cd sheepdog/

cd script/

chmod u+x gen_bash_completion.pl     //下载的sheepdog目录里该文件需要有执行权限

cd ../

chmod u+x autogen.sh        //下载的sheepdog目录里该文件需要有执行权限

./autogen.sh

./configure --enable-zookeeper --disable-corosync        

make

make install 

安装完毕

4、四个存储节点上格式化并挂载两块磁盘

mkfs.ext4 /dev/sdb

mkfs.ext4 /dev/sdc

mount -t ext4 /dev/sdb /shd/obj0
mount -t ext4 /dev/sdc /shd/obj1   // /shd/obj0和/shd/obj1目录手动创建

5、四台存储节点启动sheepdog执行:sheep /shd/obj0 /shd/obj1 -c zookeeper:192.168.232.100:2181,192.168.232.101:2181,192.168.232.102:2181,192.168.232.103:2181

6、若启动成功,在4台中的其中一台机器执行dog node list可查看集群节点信息如下:

[root@S01 ~]# dog node list
  Id   Host:Port         V-Nodes       Zone
   0   192.168.232.100:7000 128 1692969152
   1   192.168.232.101:7000 128 1709746368
   2   192.168.232.102:7000 128 1726523584
   3   192.168.232.103:7000 128 1743300800

centos6使用docker部署zookeeper操作示例

centos6使用docker部署zookeeper操作示例

本文实例讲述了centos6使用docker部署zookeeper操作。分享给大家供大家参考,具体如下:

目录结构:

/zookeeper
    /Dockerfile
    /start.sh
    /Readme
    /zookeeper-3.4.10.tar.gz

Dockerfile

FROM centos
MAINTAINER qiongtao.li hnatao@126.com
ADD ./zookeeper-3.4.10.tar.gz /opt
ADD ./start.sh /start.sh
ENV ZOO_PORT=2181\
 ZOO_DIR=/opt/zookeeper \
 ZOO_DATA_DIR=/data/zookeeper/data
 ZOO_DATA_LOG_DIR=/data/zookeeper/logs
RUN echo "Asia/shanghai" > /etc/timezone \
 && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
 && yum -y install java \
 && mkdir -p "$ZOO_DATA_DIR" \
 && mkdir -p "$ZOO_DATA_LOG_DIR" \
 && mv /opt/zookeeper-3.4.10 "$ZOO_DIR"
VOLUME ["$ZOO_DATA_DIR"]
EXPOSE $ZOO_PORT
ENV PATH=$PATH:$ZOO_DIR/bin
ENTRYPOINT ["sh", "/start.sh"]

start.sh

#!/bin/bash
CONF=${ZOO_DIR}/conf/zoo.cfg
cp -a ${ZOO_DIR}/conf/zoo_sample.cfg $CONF
sed -i "s|dataDir=/tmp/zookeeper|dataDir=${ZOO_DATA_DIR}|g" $CONF
sed -i "s|clientPort=2181|clientPort=${ZOO_PORT}|g" $CONF
echo "dataLogDir=${ZOO_DATA_LOG_DIR}" >> $CONF
for server in $ZOO_SERVERS; do
 echo "$server" >> $CONF
done
if [ ! -f "$ZOO_DATA_DIR/myid" ]; then
 echo "${ZOO_MY_ID:-1}" > "$ZOO_DATA_DIR/myid"
fi
zkServer.sh start-foreground

Readme

docker rm -f zk
docker rmi -f zk
docker build -t zk .
docker run -d \
 -p 2181:2181 \
 --name zk \
  -v /data:/data \
 zk
docker ps -a
docker logs -f zk

测试安装部署

cat Readme|while read line; do $line; done

zookeeper下载地址:

https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/stable/zookeeper-3.4.10.tar.gz

希望本文所述对大家Docker容器使用有所帮助。

您可能感兴趣的文章:
  • Docker下安装zookeeper(单机和集群)
  • Docker搭建Zookeeper&Kafka集群的实现
  • Docker快速安装Zookeeper的详细教程

Hadoop+Zookpeeper+Hbase+Nutch 2.3+Solr4.8.1部署笔记

Hadoop+Zookpeeper+Hbase+Nutch 2.3+Solr4.8.1部署笔记

环境

Linux版本:CentOS 6.5
JDK版本:Jdk 1.7.0_75
Tomcat 版本:Tomcat 8.0.9
Hadoop版本:Hadoop 2.5.2
Zookeeper版本:Zookeeper 3.4.6
Hbase版本:Hbase 0.98.8
Solr版本:Solr 4.8.1
Nutch版本:Nutch 2.3.1

内容

1.设置安装环境

我这里用了3台主机进行集群,具体主机名、IP地址划分如下:

主机名 		 	IP
-----------------------------
Master.Hadoop	10.192.87.208
Slave1.Hadoop	10.192.87.200
Slave2.Hadoop	10.192.87.201

1.1 分别修改3台主机的主机名和IP地址、host

可以通过修改/etc/sysconfig/network文件的方法修改主机名如下:

[root@localhost conf]# vi /etc/sysconfig/network

NETWORKING=yes
HOSTNAME=Master.Hadoop 

通过修改/etc/sysconfig/network-scripts/ifcfg-eth0文件的方式修改IP地址:

[root@Master ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0

通过以上方式分别修改3台主机的主机名和IP地址。

修改/etc/hosts文件(3主机一样):

[hadoop@Master ~]$ sudo vi /etc/hosts

添加如下内容:

10.192.87.208  Master.Hadoop	
10.192.87.200  Slave1.Hadoop	
10.192.87.201  Slave2.Hadoop	

1.2 新建用户hadoop,并赋予执行所用命令的权限(统一)

方法如下:

[root@Master ~]# useradd hadoop
[root@Master ~]# passwd hadoop
[root@Master ~]# vi /etc/sudoers

添加如下内容

输入图片说明

1.3 在/usr/目录下新建java/、hadoop/、hbase/、zookeeper/目录(统一),在Master.Hadoop主机/usr/目录下另外新建nuth/、solr/目录

Master.Hadoop主机的命令如下:

[hadoop@Master usr]$sudo mkdir /usr/java hadoop hbase zookeeper nutch solr
[hadoop@Master usr]$sudo chown -R hadoop:hadoop hadoop hbase zookeeper nutch solr

1.4 把jdk、hadoop、hbase、zookeeper 、nutch、solr的安装包分别拷贝到相应目录。

拷贝的方法很多,我这里使用的是ssh的SecureFX。 hbase安装包的解压命令如下:

[hadoop@Master usr]$ cd /usr/hbase
[hadoop@Master hbase]$ sudo tar -zxvf hbase-0.98.8.tar.gz

其他安装包方法同上。

1.5 设置jdk环境变量

通过修改/etc/profile文件的方式设置环境变量:

[hadoop@Master hbase]$ sudo vi /etc/profile

添加如下内容:

#set JDK environment
JAVA_HOME=/usr/java/jdk1.7.0_75
JRE_HOME=$JAVA_HOME/jre
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_HOME CLASS_PATH PATH

让修改生效:

[hadoop@Master hbase]$ source /etc/profile

验证一下是否生效:

[hadoop@Master hbase]$ java -version
java version "1.7.0_75"
Java(TM) SE Runtime Environment (build 1.7.0_75-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.75-b04, mixed mode)

1.6 关闭Iptables、Selinux

这里为了方便配置,直接把Iptables、Selinux关闭,实际生产环境中可以添加策略进行配置。

1.7 配置ssh,发布公钥证书

因为Hadoop主机间通过ssh连接,所以需要配置ssh免密码登录。 我的机器ssh默认安装的,如果没有安装,可以通过以下命令进行安装:

[hadoop@Master ~]# yum install ssh* -y

由Master.Hadoop发布公钥证书,要切换的hadoop用户下。 主机Master.Hadoop操作:

[hadoop@Master ~]$ ssh-keygen -t rsa -P '''' -f ~/.ssh/id_rsa

这个条命令会在~/.ssh/ 目录会生成id_rsa和id_rsa.pub两个文件,将id_rsa.pub复制一份在~/.ssh/目录下,并重命名为authorized_keys,如果是单机搭建伪分布式,此时ssh的准备工作已经完成了,如果使用全分布式环境,那么需要将authorized_keys(或authorized_keys中的内容追加到需要无密码登陆的服务器的~/.ssh/authorized_keys文件中)及id_rsa(或id_rsa中的内容追加到需要无密码登陆的服务器的~/.ssh/id_rsa文件中)两个文件复制到各台分布式slave机器的~/.ssh目录中,这样任意两台机器之间互相通过ssh访问,都不需要输入密码了,如果只是拷贝到authorized_keys到slave机器中,就只能够实现主到从的不输密码访问。

[hadoop@Master ~]$ cd .ssh/
[hadoop@Master .ssh]$ cp id_rsa.pub authorized_keys

测试一下是否成功:

[hadoop@Master .ssh]$ ssh 10.192.87.177
The authenticity of host ''10.192.87.177 (10.192.87.177)'' can''t be established.
RSA key fingerprint is f6:e2:37:2c:fb:53:39:d9:1c:62:97:4f:0f:40:1a:e6.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ''10.192.87.177'' (RSA) to the list of known hosts.
[hadoop@Master ~]$ logout
Connection to 10.192.87.177 closed.

好了,不用输密码就可以了。

注:如果需要远程登陆的服务器上还没有.ssh目录,那么就在登陆用户的目录下新建.ssh目录,权限至少设置成744,如果.ssh目录下没有authorized_keys文件,也新建该文件,并将其权限设置为644。

主机Slave1.Hadoop、Slave2.Hadoop

1.8 禁用IPV6

启用IPV6,Hadoop启动的时候会有些问题,所以这里就禁用掉。 方法一: 修改 /etc/sysctl.conf配置文件

[hadoop@Master ~]$ sudo vi /etc/sysctl.conf

添加如下内容:

# disable ipv6
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1

然后,保存,重启。 要想查看是否启用了IPV6,可以通过以下命令:

[hadoop@Master ~]$ cat /proc/sys/net/ipv6/conf/all/disable_ipv6

如果返回0,就是启用;1,就是禁用。

方法二:

通过修改Hadoop的配置文件/usr/hadoop/hadoop-1.1.2/conf/hadoop-env.sh

[hadoop@Master ~]$ cd /usr/hadoop/hadoop-1.1.2/conf/
[hadoop@Master conf]$ vi hadoop-env.sh

添加如下内容:

export HADOOP_OPTS=-Djava.net.preferIPv4Stack=true

然后,重启Hadoop。

1.9 修改进程最大文件打开数

[hadoop@Master ~]$vi /etc/security/limits.conf

# End of file  
*   -  nofile  1000000  
*   -  nproc   1000000  


[hadoop@Master ~]$vi /etc/profile
 
ulimit -u 1000000

[hadoop@Master ~]$source /etc/profile

查看:

[hadoop@Master ~]$ ulimit -an
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 22947
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1000000
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 10240
cpu time               (seconds, -t) unlimited
max user processes              (-u) 1000000
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited
[hadoop@Master ~]$ ulimit -an
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 22947
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1000000
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 10240
cpu time               (seconds, -t) unlimited
max user processes              (-u) 1000000
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

1.10 设置定时自动更新系统时间

1.10.1 安装ntpdate

[hadoop@Master ~]$ sudo yum install ntpdate -y

1.10.2 添加定时任务

[hadoop@ Master ~]$ su - root
Password: 
[root@ Master ~]# echo ''*/5 * * * * /usr/sbin/ntpdate time.windows.com >/dev/null 2 >&1'' >>/var/spool/cron/root

2.安装Hadoop

2.1 设置环境变量(三台主机都要进行,这里已Master.Hadoop为例)

[hadoop@Master ~]$ sudo vi /etc/profile

添加如下内容:

#set Hadoop environment

HADOOP_HOME=/usr/hadoop/hadoop-2.5.2
PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HADOOP_HOME PATH

[hadoop@Master ~]$ source /etc/profile

2.2 修改配置文件(三台主机都要进行,这里已Master.Hadoop为例)

2.2.1 设置$HADOOP_HOME/etc/hadoop/hadoop-env.sh

这个文件中设置的是Hadoop运行时需要的环境变量

[hadoop@Master ~]$ cd /usr/hadoop/hadoop-2.5.2/etc/hadoop/
[hadoop@Master hadoop]$ vi hadoop-env.sh

找到export JAVA_HOME=修改为:

输入图片说明

2.2.2 配置$HADOOP_HOME/etc/hadoop/core-site.xml

[hadoop@Master hadoop]$ sudo vi core-site.xml

修改如下如下内容:

<configuration>
  <property>
    <name>fs.defaultFS</name>
    <value>hdfs://Master.Hadoop:9000</value>
  </property>
  <property>
    <name>hadoop.tmp.dir</name>
    <value>/usr/hadoop/hadoop-2.5.2/tmp</value>
    <description>A base for other temperary directory</description>
  </property>
</configuration>

注:/usr/hadoop /hadoop-2.5.2/tmp要手动创建

[hadoop@Master hadoop]$ mkdir /usr/hadoop/hadoop-2.5.2/tmp

2.2.4 配置$HADOOP_HOME/etc/hadoop/mapred-site.xml文件

[hadoop@Master hadoop]$ cp mapred-site.xml.template mapred-site.xml
[hadoop@Master hadoop]$ vi mapred-site.xml

修改如下:

<configuration>
 <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
    <final>true</final>
 </property>
 <property>
    <name>mapreduce.jobtracker.http.address</name>
    <value>Master.Itble:50030</value>
 </property>
 <property>
    <name>mapreduce.jobhistory.address</name>
    <value>Master.Itble:10020</value>
 </property>
 <property>
    <name>mapreduce.jobhistory.admin.address</name>
    <value>Master.Itble:10033</value>
 </property>
 <property>
    <name>mapreduce.tasktracker.http.address</name>
    <value>Master.Itble:50060</value>
 </property>
 <property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>Master.Itble:19888</value>
 </property>  
</configuration>

2.2.5 配置$HADOOP_HOME/etc/hadoop/hdfs-site.xml文件

[hadoop@Master hadoop]$ vi hdfs-site.xml

修改为如下:

<configuration>
	<property>
        <name>dfs.replication</name>
	    <value>2</value>
	</property>
	<property>
    	<name>dfs.namenode.secondary.http-address</name>
    	<value>Master.Hadoop:9001</value>
	</property>
	<property>
		<name>dfs.http.address</name>
		<value>Master.Hadoop:50070</value>
		<description>The address and the base port where the dfs namenode web ui will listen on.If the port is 0 then the server will start on a free port.
 		</description>
	</property>
	<property>
 		<name>dfs.namenode.secondary.http-address</name>
 		<value>Master.Hadoop:50090</value>
	</property>
	<property>
    	<name>dfs.namenode.name.dir</name>
    	<value>file:///usr/hadoop/hadoop-2.5.2/dfs/name</value>
	</property>
	<property>
    	<name>dfs.datanode.data.dir</name>
    	<value>file:///usr/hadoop/hadoop-2.5.2/dfs/data</value>
</property>
    <property>
            <name>dfs.datanode.max.transfer.threads</name>
            <value>8192</value>
    </property>
</configuration>

2.2.6 配置$HADOOP_HOME/etc/hadoop/yarn-site.xml文件

[hadoop@Master hadoop]$ vi yarn-site.xml

修改如下:

<configuration>
	<property>
		<name>yarn.resourcemanager.hostname</name>
		<value>Master.Hadoop</value>
		<description>ResourceManager host</description>
	</property>
	<property>  
    	<name>yarn.nodemanager.aux-services</name>  
    	<value>mapreduce_shuffle</value>  
	</property>
            <property>
            <name>yarn.log-aggregation-enable</name>
            <value>true</value>
            </property>
            <property>
            <name>yarn.log-aggregation.retain-seconds</name>
            <value>864000</value>
            </property>
            <property>
            <name>yarn.nodemanager.remote-app-log-dir</name>
            <value>/tmp/hadoop-yarn/aggrelogs</value>
            </property>
</configuration>

2.2.7 修改$HADOOP_HOME/etc/hadoop/slaves文件

[hadoop@Master hadoop]$ vi slaves

内容如下:

Slave1.Hadoop
Slave2.Hadoop

2.3 启动并验证

2.3.1 格式化namenode(3台主机都要进行)

[hadoop@Master hadoop]$ hadoop namenode -format

2.3.2 启动(Master主机进行)

[hadoop@Master logs]$ start-all.sh

输入图片说明

启动的时候,出现了一条警告信息。在网上搜了下,是因为hadoop的本地库是在32位环境下编译,运行在64位环境下就出现了这个问题。有两个解决方案: 一是自己下载hadoop的源码包,自己编译。 二是下载在64位环境下编译的hadoop的本地库文件,替换原来的32位本地库。 替换,重新启动. OK了。

2.3.3 验证

通过jps命令查看运行进程:

Masrer.Hadoop2:

输入图片说明

Slave1.Hadoop2:

输入图片说明

Slave2.Hadoop2:

输入图片说明

3.安装Zookeeper

Zookeeper的安装比较简单:

3.1 修改配置文件zoo.cfg

[hadoop@Master ~]$ cd /usr/zookeeper/zookeeper-3.4.6/conf
[hadoop@Master conf]$ cp zoo_sample.cfg  zoo.cfg
[hadoop@Master conf]$ vi zoo.cfg

内容如下:

tickTime=2000
initLimit=10
syncLimit=5
clientPort=2181
dataDir=/usr/zookeeper/zookeeper-3.4.6/data
dataLogDir=/usr/zookeeper/zookeeper-3.4.6/log

server.1=Master.Hadoop:2888:3888
server.2=Slave1.Hadoop:2888:3888
server.3=Slave2.Hadoop:2888:3888

3.2 在/usr/zookeeper/zookeeper-3.4.6/下创建目录data/,log/,并在新建myid文件。

具体如下:

[hadoop@Master ~]$ cd /usr/zookeeper/zookeeper-3.4.6
[hadoop@Master zookeeper-3.4.6]$ mkdir log data
[hadoop@Master zookeeper-3.4.6]$ cd data
[hadoop@Master data]$ echo “1”>myid

注:myid里面的内容要和zoo.cfg里面配置的server.X中的X是对应的,Master主机对应的就是“1”。

3.3 启动

三台主机要分别取启动,这里以Master为例:

[hadoop@Master ~]$ cd /usr/zookeeper/zookeeper-3.4.6
[hadoop@Master zookeeper-3.4.6]$ bin/zkServer.sh start

输入图片说明

可以查看运行状态:

输入图片说明

4.安装Hbase(三台主机配置一样)

因为官方的hbase-0.98.8-hadoop2-bin是在hadoop2.2版本下编译的,这里我们要重新编译成hadoop2.5.2的。

4.1 修改hbase文件夹所有者

[hadoop@Master ~]$ sudo chown -R hadoop:hadoop /usr/hbase

4.2 修改配置文件

4.2.1 配置hbase-site.xml

[hadoop@Master ~]$ cd cd /usr/hbase/hbase-0.98.8-hadoop2/conf
[hadoop@Master hadoop]$ vi hbase-site.xml

修改如下:

<configuration>
	<property>
		<name>hbase.zookeeper.quorum</name>
		<value>Master.Hadoop,Slave1.Hadoop,Slave2.Hadoop</value>
	</property>
	<property>
		<name>hbase.rootdir</name>
		<value>hdfs://Master.Hadoop:9000/hbase</value>
	</property>
	<property>
		<name>hbase.cluster.distributed</name>
		<value>true</value>
	</property>  
	<property>
		<name>hbase.master</name>
		<value>60000</value>
	</property>
</configuration>

4.2.2 配置regionservers

[hadoop@Master hadoop]$ vi regionservers

修改如下:

Slave1.Hadoop
Slave2.Hadoop

4.2.3 配置hbase-env.sh

修改JAVA_HOME,关闭内置zookeeper

[hadoop@Master hadoop]$  vi hbase-env.sh

修改如下:

export JAVA_HOME=/usr/java/jdk1.7.0_75
export HBASE_MANAGES_ZK=false

4.4.4 启动hbase及验证

只在Master.Hadoop进行以下命令:

[hadoop@Master ~]$ cd /usr/hbase/hbase-0.98.8-hadoop2/
[hadoop@Master hbase-0.98.8-hadoop2]$ bin/start-hbase.sh

输入图片说明

通过jsp查看:

Master.Hadoop:

输入图片说明

Slave1.Hadoop:

输入图片说明

Slave2.Hadoop:

输入图片说明

在Master.Hadoop上执行,启动hbase前要确保hadoop正常运行:

[hadoop@Master hbase-0.98.8-hadoop2]$ bin/hbase shell

正常运行。

注: 1.启动要按照hadoop->zookeeper->hbase的顺序,关闭要按照相反的顺序: hbase->hadoop 2.因为三台主机都要配置hadoop和hbase,而且内容相差不大,可以通过先Master,然后把配置好的hadoop和hbase传到另外两台主机上。传输方法很多,我这里使用的是scp命令:

这里以hbase为例: [hadoop@Master hbase]$ scp -r hbase/ hbase-0.98.8-hadoop2 hadoop@Slave1.Hadoop:/usr/hbase/ [hadoop@Master hbase]$ scp -r hbase/ hbase-0.98.8-hadoop2 hadoop@Slave2.Hadoop:/usr/hbase/

5.安装Nutch

5.1 安装Ant

Nutch2.X都是src包,需要用Ant编译。 安装步骤同JAVA,设置环境变量:

[hadoop@Master apache-ant-1.9.4]$ sudo vi /etc/profile

添加如下内容:

#set ant environment

ANT_HOME=/usr/ant/apache-ant-1.9.4
CLASS_PATH=$CLASS_PATH:$ANT_HOME/lib
PATH=$PATH:$ANT_HOME/bin

export ANT_HOME CLASS_PATH PATH

让修改生效:

[hadoop@Master apache-ant-1.9.4]$ source /etc/profile

5.2 编译Nutch

前面已经把Nutch的安装包上传,解压,下面只需要进行一些配置。

5.2.1 配置/usr/nutch/apache-nutch-2.3/conf/nutch-site.xml文件:

[hadoop@Master ~]$ cd /usr/nutch/apache-nutch-2.3/conf/
[hadoop@Master hadoop]$ vi nutch-site.xml

内容如下:

<configuration>
	<property>
 		<name>storage.data.store.class</name>
 		<value>org.apache.gora.hbase.store.HBaseStore</value>
 		<description>Default class for storing data</description>
	</property>

	<property>
 		<name>http.agent.name</name>
 		<value>JustinNutchAgent</value>
	</property>
    <property>
         <name>http.content.limit</name>
         <value>655360</value>
         <description>The length limit for downloaded content using the http protocol, in bytes. If this value is nonnegative (>=0), content longer than it will be truncated; otherwise, no truncation at all. Do not confuse this setting with the file.content.limit setting.
        </description>
    </property>    
	<property>
		<name>plugin.includes</name>
		<value>protocol-httpclient|urlfilter-regex|query-(basic|site|url|lang)|indexer-solr|nutch-extensionpoints|parse-(text|html|msexcel|msword|mspowerpoint|pdf)|summary-basic|scoring-opic|urlnormalizer-(pass|regex|basic)protocol-http|urlfilter-regex|parse-(html|tika|metatags)|index-(basic|anchor|more|metadata)</value>
	</property>

	<property>
		<name>io.serializations</name>
		<value>org.apache.hadoop.io.serializer.WritableSerialization</value>
		<description>A list of serialization classes that can be used forobtaining serializers and deserializers.</description>
	</property>
</configuration>

5.2.2 配置/usr/nutch/apache-nutch-2.3/ivy/ivy.xml文件

找到如下内容:

<dependency org="org.apache.gora" name="gora-core" rev="0.6" conf="*->default"/>
<dependency org="org.apache.gora" name="gora-hbase" rev="0.6" conf="*->default" />
<dependency org="org.apache.gora" name="gora-compiler-cli" rev="0.6" conf="*->default"/>
<dependency org="org.apache.gora" name="gora-compiler" rev="0.6" conf="*->default"/>

确保此配置生效,即如果发现此配置有注释,去掉注释。

注意:rev=0.5对应的Hbase版本是Hbase0.94.14,rev=0.3对应的Hbase版本是hbase0.90.4。

默认情况下,此语句被注释掉,将其注释符号去掉,使其生效。

将hadoop相关的注释掉,然后添加:

<dependency org="org.apache.hadoop" name="hadoop-client" rev="2.5.2" conf="*->default"/>
<dependency org="org.apache.hbase" name="hbase-common" rev="0.98.8-hadoop2" conf="*->default"/>

如下面这两个,注释掉。

<dependency org="org.apache.hadoop" name="hadoop-core"  rev="1.2.1" conf="*->default”>  
<dependency org="org.apache.hadoop" name="hadoop-test" rev="1.2.1" conf="test->d

5.2.3 修改gora.properties

/usr/nutch/apache-nutch-2.3/conf/gora.properties文件中查找“gora.datastore.default”修改为如下内容:

gora.datastore.default=org.apache.gora.hbase.store.HbaseStore

5.2.4 根据需要修改网页过滤器(regex-urlfilter.txt)

[hadoop@Master ~]$ cd /usr/nutch/apache-nutch-2.3/conf/
[hadoop@Master hadoop]$ vi regex-urlfilter.txt

修改如下:

# accept anything else
+^http://([a-z0-9]*\.)*sohu.com

5.2.5 执行编译

在/usr/nutch/apache-nutch-2.3目录下,执行:ant runtime 命令,进行编译

[hadoop@Master ~]$ cd /usr/nutch/apache-nutch-2.3/
[hadoop@Master ~]$ sudo ant runtime

注:编译的时候,要有root权限

5.2.7 添加要爬取的网站地址(编译完之后)

[hadoop@Master ~]$ cd /usr/nutch/apache-nutch-2.3/runtime/deploy/
[hadoop@Master deploy]$ mkdir urls
[hadoop@Master deploy]$ cd urls
[hadoop@Master urls]$ echo ''http://www.sohu.com''>seeds.txt

5.2.8 上传的hdfs,完成种子url的注入

[hadoop@Master deploy]$ hadoop dfs -put urls urls

5.2.9 集成Solr

/usr/nutch/apache-nutch-2.3/conf/schemal.xml 拷贝到/usr/solr/solr-4.8.1/example/solr/collection1/conf/替换掉原来的schemal.xml。

[hadoop@Master ~]$ cd /usr/nutch/apache-nutch-2.3/conf/
[hadoop@Master hadoop]$ cp schema.xml /usr/solr/solr-4.8.1/example/solr/collection1/conf/

5.2.10 运行Solr

[hadoop@Master ~]$ cd /usr/solr/solr-4.8.1/example/
[hadoop@Master example]$ java -jar start.jar

5.2.11 根据Slave数量修改bin/crawl脚本

[hadoop@Master ~]$ vi /usr/nutch/apache-nutch-2.3/runtime/deploy/bin/crawl
# set the number of slaves nodes
numSlaves=2

5.2.12 运行Nutch,爬取数据

[hadoop@Master deploy]$ bin/crawl urls CrawlTest http://Master.Hadoop:8983/solr 2

结果:虽然爬取到了数据,用Solr也可以查到,但出现了一个异常:

输入图片说明

在jar包里找了下,有这个类,但是hadoop无法识别,可以通过修改源代码纠正,具体如下:

[hadoop@Master ~]$ cd /usr/nutch/apache-nutch-2.3/src/java
[hadoop@Master java]$ vi /org/apache/nutch/indexer/solr/SolrDeleteDuplicates.java

找到Job job = new Job(getConf(), "solrdedup");在下面添加如下代码:

job.setJarByClass(SolrDeleteDuplicates.class);

然后重新用Ant编译。重新爬取,正常了。

注:conf 下面的配置文件都会被打包到Ant后生成的job文件中,所以如果修改过滤规则,要重新用Ant编译。

6.配置SolrCloud

SolrCloud是基于Solr和Zookeeper的分布式搜索方案。SolrCloud通过 ZooKeeper集群来进行协调,使一个索引进行分片,各个分片可以分布在不同的物理节点上,多个物理分片组成一个完成的索引Collection。SolrCloud自动支持Solr Replication,可以同时对分片进行复制,冗余存储。

6.1 配置SolrCloud

6.1.1 创建solrcloud文件目录,并所属者改为hadoop

[hadoop@Master ~]$ sudo mkdir -p /usr/solrcloud/{multicore,solr-lib}
[hadoop@Master ~]$ sudo chown -R hadoop:hadoop /usr/solrcloud

6.1.2 配置lib

/usr/solr/solr-4.8.1/example/solr-webapp/webapp/WEB-INF/lib//usr/solr/solr-4.8.1/example/lib/ext/目录下的文件都拷贝到/usr/solrcloud/solr-lib/目录下:

[hadoop@Master ~]$ cd /usr/solrcloud/solr-lib
[hadoop@Master solr-lib]$ cp /usr/solr/solr-4.8.1/example/solr-webapp/webapp/WEB-INF/lib/* ./
[hadoop@Master solr-lib]$ cp /usr/solr/solr-4.8.1/example/lib/ext/* ./

6.1.3 创建配置文件目录

/usr/solr/example/solr/collection1/conf/目录下的文件拷贝到/usr/solrcloud/multicore/collection/conf/目录下,将/usr/solr/example/solr/multicore/下的solr.xmlzoo.cfg拷贝到/usr/solrcloud/multicore目录下:

[hadoop@Master ~]$ mkdir -p /usr/solrcloud/multicore/collection/{conf,data}
[hadoop@Master ~]$ cd /usr/solrcloud/multicore/collection/conf/
[hadoop@Master conf]$ cp -r /usr/solr/solr-4.8.1/example/solr/collection1/conf/* ./
[hadoop@Master multicore]$ cd /usr/solrcloud/multicore
[hadoop@Master multicore]$ cp /usr/solr/solr-4.8.1/example/multicore/{solr.xml,zoo.cfg} ./

6.1.4 将/usr/nutch/apache-nutch-2.3/conf/schema.xml拷贝到/usr/solrcloud/multicore/collection/conf/目录,替换掉原来schema.xml,并进行编辑:

[hadoop@Master ~]$ cd /usr/solrcloud/multicore/collection/conf/
[hadoop@Master conf]$ cp /usr/nutch/apache-nutch-2.3/conf/schema.xml ./
[hadoop@Master conf]$ vi schema.xml

这里修改2个地方:

1>

<dynamicField name="meta_*" type="string" stored="true" indexed="true" />

给这个字段添加multiValued="true"属性。 修改后为: <dynamicField name="meta_*" type="string" stored="true" indexed="true" multiValued="true" />

2>

<solrQueryParser defaultOperator="OR"/>

把“OR”改为“AND”,修改后为: <solrQueryParser defaultOperator="AND"/>

6.1.5 修改solr.xml,如下内容

<solr persistent="true">
   <cores adminPath="/admin/cores" host="${host:}" hostPort="${jetty.port:8080}" hostContext="${hostContext:solr}">
  <shardHandlerFactory name="shardHandlerFactory">
  <str name="urlScheme">${urlScheme:}</str>
</shardHandlerFactory></cores>
</solr>

6.1.6 通过Zookeeper管理配置文件

上传配置文件

java -classpath .:/usr/solrcloud/solr-lib/* org.apache.solr.cloud.ZkCLI -cmd upconfig --zkhost Master.Hadoop:2181,Slave1.Hadoop:2181,Slave2.Hadoop:2181  --confdir /usr/solrcloud/multicore/collection/conf --confname myconf  

把collection和配置文件关联

java -classpath .:/usr/solrcloud/solr-lib/* org.apache.solr.cloud.ZkCLI -cmd linkconfig --collection collection1 --confname myconf --zkhost Master.Hadoop:2181,Slave1.Hadoop:2181,Slave2.Hadoop:2181

6.2 配置Tomcat

Tomcat的安装,这里就不在详细说了。只把和SolrCloud配置相关的内容讲一下。

6.2.1 部署solr

/usr/solr/solr-4.8.1/example/webapps/solr.war复制到/usr/tomcat/apache-tomcat-8.0.9/webapps/目录

[hadoop@Master ~]$ cd /usr/solr/solr-4.8.1/example/webapps
[hadoop@Master webapps]$ cp solr.war /usr/tomcat/apache-tomcat-8.0.9/webapps/

6.2.2 启动Tomcat

/usr/tomcat/apache-tomcat-8.0.9/webapps/下面的solr.war会自动部署 [hadoop@Master webapps]$ cd /usr/tomcat/apache-tomcat-8.0.9 [hadoop@Master apache-tomcat-8.0.9]$ bin /startup.sh

6.2.3 修改solr_home

修改/usr/tomcat/apache-tomcat-8.0.9/webapps/solr/WEB-INF/web.xml,修改内容为下:

<env-entry>
   <env-entry-name>solr/home</env-entry-name>
   <env-entry-value> /usr/solrcloud/multicore </env-entry-value>
   <env-entry-type>java.lang.String</env-entry-type>
</env-entry>

把注释去掉,其中红色部分为修改内容。

6.2.4 添加log4j配置文件

/usr/solr/solr-4.8.1/example/lib/ext下面所有的文件和/usr/solr/solr-4.8.1/example/resources/log4j.properties拷贝到/usr/tomcat/apache-tomcat-8.0.9/lib/目录:

cd /usr/solr/solr-4.8.1/example/lib/ext
cp * /usr/tomcat/apache-tomcat-8.0.9/lib/
cd /usr/solr/solr-4.8.1/example/resources/
cp log4j.properties /usr/tomcat/apache-tomcat-8.0.9/lib/

6.2.5 修改启动参数

修改/usr/tomcat/apache-tomcat-8.0.9/bin/catalina.sh文件,添加如下代码:

JAVA_OPTS="-server –Xmx800m –Xms800m -verbose:gc -Xloggc:solr_gc.log -Dsolr.solr.home=/usr/solrcloud/multicore -DzkHost=Master.Hadoop:2181,Slave1.Hadoop:2181,Slave2.Hadoop:2181"

重启Tomcat,在浏览器输入http://Master.Hadoop:8080/solr

cd /usr/tomcat/apache-tomcat-8.0.9/bin shutdown.sh startup.sh

6.3 配置IK分词

6.3.1 修改配置文件

修改/usr/solrcloud/multicore/collection/conf/schemal.xml文件 在<types></types>标签内添加如下内容:

<fieldType name="text_ik">
   <analyzer type="index" isMaxWordLength="false"/>
   <analyzer type="query" isMaxWordLength="true"/>
</fieldType>

然后,修改所要进行分词的字段的类型我这里以content字段为例,修改后如下:

<field name="content" type="text_ik" stored="true" indexed="true" termVectors="true"/>

6.3.2 配置完之后,要重新上传配置文件到Zookeeper

上传配置文件

java -classpath .:/usr/solrcloud/solr-lib/* org.apache.solr.cloud.ZkCLI -cmd upconfig --zkhost Master.Hadoop:2181,Slave1.Hadoop:2181,Slave2.Hadoop:2181  --confdir /usr/solrcloud/multicore/collection/conf --confname myconf  

6.3.3 添加jar包

把Ik所需的jar包和配置文件拷贝到/usr/tomcat/apache-tomcat-8.0.9/webapps/solr/WEB-INF/目录

6.3.4 创建collection和replicate

创建一个名为mycollection的collection,分成3个shard,每个shard有1个replicat:

curl ''http://Master.Hadoop:8080/solr/admin/collections?action=CREATE&name=mycollection&numShards=3&replicationFactor=1''

打开浏览器,可以看到如下:

输入图片说明

下面使用nutch重新抓取,创建索引:

[hadoop@Master ~]$ cd /usr/nutch/apache-nutch-2.3/runtime/deploy
[hadoop@Master deploy]$ bin/crawl urls CrawlTest http://Master.Hadoop:8080/solr/mycollection 1

完成后,分别查看,各SolrCloud各节点索引:

Master.Hadoop:

输入图片说明

Slave1.Hadoop:

输入图片说明

Slave3.Hadoop:

输入图片说明

6.4 配置SolrCloud使用HDFS存储

6.4.1 修改tomcat启动参数

编辑/usr/tomcat/apache-tomcat-8.0.9/bin/catalina.sh 添加红色部分

JAVA_OPTS="-server -Xmx800m –Xms800m -verbose:gc -Xloggc:solr_gc.log -XX:MaxDirectMemorySize=1g -Dsolr.directoryFactory=HdfsDirectoryFactory -Dsolr.lock.type=hdfs -Dsolr.hdfs.home=hdfs://Master.Hadoop:9000/solr -Dsolr.solr.home=/usr/solrcloud/multicore -DzkHost=Master.Hadoop:2181,Slave1.Hadoop:2181,Slave2.Hadoop:2181"

6.4.2 修改配置文件

修改/usr/solrcloud/multicore/collection/conf/solrconfig.xml文件 添加这部分:

<directoryFactory name="DirectoryFactory">  
	<str name="solr.hdfs.home">hdfs://Master.Hadoop:9000/solr</str>
	<bool name="solr.hdfs.blockcache.enabled">true</bool>  
   <int name="solr.hdfs.blockcache.slab.count">1</int>  
   <bool name="solr.hdfs.blockcache.direct.memory.allocation">true</bool>  
   <int name="solr.hdfs.blockcache.blocksperbank">16384</int> 
   <bool name="solr.hdfs.blockcache.read.enabled">true</bool>  
   <bool name="solr.hdfs.blockcache.write.enabled">true</bool>  
   <bool name="solr.hdfs.nrtcachingdirectory.enable">true</bool>  
   <int name="solr.hdfs.nrtcachingdirectory.maxmergesizemb">16</int>  
   <int name="solr.hdfs.nrtcachingdirectory.maxcachedmb">192</int>  
   <str name="solr.hdfs.confdir">/usr/hadoop/hadoop-2.5.2/etc/hadoop</str>  
</directoryFactory>

再找到: <lockType>${solr.lock.type:native}</lockType>将其修改为<lockType>${solr.lock.type:hdfs}</lockType>

ok!重启tomcat。然后重新创建索引。

关于zookeeper部署笔记zookeeper 部署的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于14. zookeeper部署、4节点sheepdog集群+3节点zookeeper部署和配置、centos6使用docker部署zookeeper操作示例、Hadoop+Zookpeeper+Hbase+Nutch 2.3+Solr4.8.1部署笔记等相关内容,可以在本站寻找。

本文标签: