在这里,我们将给大家分享关于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 部署)
- 14. zookeeper部署
- 4节点sheepdog集群+3节点zookeeper部署和配置
- centos6使用docker部署zookeeper操作示例
- Hadoop+Zookpeeper+Hbase+Nutch 2.3+Solr4.8.1部署笔记
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部署
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部署和配置
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操作。分享给大家供大家参考,具体如下:
目录结构:
/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部署笔记
环境
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.xml
和zoo.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部署笔记等相关内容,可以在本站寻找。
本文标签: