[精华]Hadoop,HBase分布式集群和solr环境搭建

时间:2021-11-23 06:06:52

1. 机器准备(这里做测试用,目的准备5台CentOS的linux系统)

1.1 准备了2台机器,安装win7系统(64位) 
两台windows物理主机: 
192.168.131.44 administrator/(密码是一个空格) 
192.168.131.67 administrator/(密码是一个空格) 
1.2. 每台机器上安装VMwareWorkstation8.0.3 
VMwareWorkstation8.0.3序列号:JG2TD-DJL95-FZZZ8-DU1NH-33GH7 
1.3. 创建虚拟机CentOS-6.5-x86_64-bin-DVD1.iso 
personalize Linux: 
full name: hadoop 
user name: hadoop 
password : root 
可在VMwareWorkstation中新建虚拟机,或克隆(已有虚拟机)的方式快速创建5台CentOS-6.5-x86_64-bin机器.分别为master1,master2,slave1,slave2,solr; 用户名/密码都是root/root. 
192.168.131.60 root/root 
192.168.131.86 root/root 
192.168.131.81 root/root 
192.168.131.85 root/root 
192.168.131.90 root/root 
新建: 
[精华]Hadoop,HBase分布式集群和solr环境搭建
克隆: 
[精华]Hadoop,HBase分布式集群和solr环境搭建

2. 基础环境配置

为了便于以后对虚拟机操作, 建议对5台CentOS进行基础环境配置. 
进入虚拟机后,建议以root用户方式登录

2.1 固定机器IP 
两种方式: 
第一种:通过Linux图形界面进行修改(强烈推荐) 
进入Linux图形界面 -> 右键点击右上方的两个小电脑 -> 点击Edit connections -> 选中当前网络System eth0 -> 点击edit按钮 -> 选择IPv4 -> method选择为manual -> 点击add按钮 -> 添加IP:192.168.131.60 子网掩码:255.255.255.0 网关:192.168.131.1 -> apply

    第二种:修改配置文件方式
vim /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE="eth0"
BOOTPROTO="static" ###
HWADDR="00:0C:29:3C:BF:E7"
IPV6INIT="yes"
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE="Ethernet"
UUID="ce22eeca-ecde-4536-8cc2-ef0dc36d4a8c"
IPADDR="192.168.131.60" ###
NETMASK="255.255.255.0" ###
GATEWAY="192.168.131.1" ###

2.2 关闭防火墙 
查看防火墙状态: service iptables status 
关闭防火墙 
service iptables status 
service iptables stop 
#查看防火墙开机启动状态 
chkconfig iptables –list 
#关闭防火墙开机启动 
chkconfig iptables off 
2.3 修改hostname: 
vim /etc/sysconfig/network

    NETWORKING=yes
HOSTNAME=master1 ###

五台机器分别修改为master1,master2,slave1,slave2,solr. 
2.4 配置hosts文件 
编辑hosts文件: 
vim /etc/hosts, 添加如下机器信息 
192.168.131.60 master1 
192.168.131.86 slave1 
192.168.131.81 master2 
192.168.131.85 slave2 
192.168.131.90 solr 
访问hdfs用的的windows系统,包括开发用的机器,都需要将ip地址信息加入hosts文件. 
2.5 配置master1,master2,slave1,slave2,solr机器之间的ssh免密码登录: 
生成ssh免登陆密钥 
cd ~,进入到我的home目录 
cd .ssh/

ssh-keygen -t rsa (四个回车)
执行完这个命令后,会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)
将公钥拷贝到要免登陆的机器上
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

ssh-copy-id -i localhost

拷贝authorized_keys文件到其他机器命令 
scp authorized_keys root@master2:~/.ssh/ 
附: 多台机器设置ssh免密码登陆技巧方法: 
1.安装ssh. sudo apt-get install ssh. 安装完成后会在~目录(当前用户主目录,即这里的/home/xuhui)下产生一个隐藏文件夹.ssh(ls -a 可以查看隐藏文件)。如果没有这个文件,自己新建即可(mkdir .ssh). 
2.进入.ssh目录下面,在每台机器上执行:ssh-keygen -t rsa 之后一路回车,产生密钥; 
3。完成第二步后会产生两个文件: 
id-rsa #私钥 
id-rsa.pub #公钥 
4.在第一台机器的目录.ssh下执行命令,cat id-rsa.pub >> authorized_keys;此后.ssh下面会出现authorized_keys文件。 
5.然后将第一台机器的.ssh目录下面的authorized_keys文件拷贝到第二台计算机的.ssh目录下,如:scp authorized_keys xuhui@cloud002:~/.ssh/ 
6.再转到第二台机器的.ssh目录下,会发现刚刚传输过来的文件-authorized_keys,然后执行命令,将第二台计算机的公钥也加进来,如:cat id-rsa.pub >> authorized_keys. 
7.将第二台计算机新生成的authorized_keys传输第三台计算机,将第三台计算机的公钥-id-rsa.pub添加到从第二台计算机传过来的authorized_keys里面。 
8.依次类推,直至集群中的最后一台计算机。 
9.在集群的最后一台计算机执行完添加后,生成的authorized_keys文件就包含集群中所有计算机的公钥,如果以后还有机器加进到集群中来,可以直接添加到文件-authorized_keys。最后,将最后生成的authorized_keys复制到集群中的每一台计算机的.ssh目录下,覆盖掉之前的authorized_keys。 
10.完成第九步后,就可以在集群中任意一台计算机上,免密码ssh登录到其他计算机了。 
2.6 时间同步 
在联网状态下, 调整所有机器在同一时区, 如shanghai, 时间即可自动同步。

3. 安装JDK

安装JDK, hadoop,hbase 可以先在一台机器安装,如master1机器上. 安装完成后直接copy相关文件和文件夹到其他机器即可完成所有机器安装. 下面有详细步骤说明. 
1. 解压jdk 
#创建文件夹 
mkdir /usr/java 
#解压 
tar -zxvf jdk-7u55-linux-i586.tar.gz -C /usr/java/ 
(对于jdk-6u45-linux-x64.bin这样的需要: 
1)在下载得到的二进制文件上执行 chmod +x 命令 
chmod +x jdk-6u21-linux-x64.bin 
2)执行该二进制文件: 
./jdk-6u21-linux-x64.bin ) 
2. 将java添加到环境变量中 
vim /etc/profile 
#在文件最后添加 
export JAVA_HOME=/usr/java/jdk1.6.0_45 
export PATH= PATH: JAVA_HOME/bin

    #刷新配置
source /etc/profile

4.安装hadoop

  1. 上传hadoop安装包

  2. 解压hadoop安装包 
    mkdir /data 
    #解压到/data/目录下 
    tar -zxvf hadoop-2.2.0.tar.gz -C /data/

  3. 修改配置信息:(5个文件)/hadoop-2.2.0/etc/hadoop目录下 
    第一个:hadoop-env.sh 
    在27行修改 
    export JAVA_HOME=/usr/java/jdk1.6.0_45 
    第二个:core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master1:9001</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/data/hadoopdata/tmp</value>
</property>
</configuration>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

第三个:hdfs-site.xml

<configuration> 
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master2:9001</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/data/hadoop-2.2.0/name</value>
<final>true</final>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/data/hadoop-2.2.0/data01</value>
<final>true</final>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
</configuration>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

第四个:mapred-site.xml.template 需要重命名: mv mapred-site.xml.template mapred-site.xml

<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapred.system.dir</name>
<value>file:/data/mapred/system</value>
<final>true</final>
</property>
<property>
<name>mapred.local.dir</name>
<value>file:/data/mapred/local</value>
<final>true</final>
</property>
</configuration>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

第五个:yarn-site.xml

<configuration>

<property>
<name>yarn.resourcemanager.address</name>
<value>master1:8032</value>
</property>

<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master1:8030</value>
</property>

<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master1:8031</value>
</property>

<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master1:8033</value>
</property>

<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master1:8088</value>
</property>

<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>

<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>

</configuration>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  1. 将hadoop添加到环境变量 
    vim /etc/profile

    export JAVA_HOME=/usr/java/jdk1.6.0_45
    export HADOOP_HOME=/cloud/hadoop-2.2.0
    export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin

5. 安装hbase

  1. 拷贝hbase-0.96.0-hadoop2-bin.tar.gz到linux 
    解压到/data目录下. 
    配置:
  2. 把hadoop的hdfs-site.xml和core-site.xml 放到hbase/conf下

  3. 修改conf/hbase-env.sh (4处修改,如下截图) 
    [精华]Hadoop,HBase分布式集群和solr环境搭建

[精华]Hadoop,HBase分布式集群和solr环境搭建

[精华]Hadoop,HBase分布式集群和solr环境搭建

[精华]Hadoop,HBase分布式集群和solr环境搭建 
4. 修改hbase-site.xml文件:

<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://master1:9001/hbase</value>
<description>The directory shared by RegionServers</description>
</property>
<property>
<name>hbase.master</name>
<value>master1:60000</value>
<description>The directory shared by RegionServers</description>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
<description>The mode the cluster will be in.Possible values are
false: standalone and pseudo-distributed setups with managed Zookeeper
true: fully-distributed with unmanaged Zookeeper Quorum (see hbase-env.sh)
</description>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>slave1,slave2</value>
<description>The directory shared by RegionServers</description>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/data/hadoopdata/hbase/zookeeper</value>
<description>Property from ZooKeeper's config zoo.cfg.
The directory where the snapshot is stored.
</description>
</property>
</configuration>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  1. 修改 regionservers 
    vim regionservers 
    slave1 
    slave2

6. 完成其他机器环境安装

把master1的hadoop目录、jdk目录、hbase目录、/etc/hosts、/etc/profile复制到master2、slave1、slave2节点 
1. Hadoop目录:/data/hadoop-2.2.0 
scp -r /data/hadoop-2.2.0 root@master2:/data 
scp -r /data/hadoop-2.2.0 root@slave1:/data 
scp -r /data/hadoop-2.2.0 root@slave2:/data 
2. Jdk目录:/usr/java 
scp -r /usr/java root@master2:/usr/java 
scp -r /usr/java root@slave1:/usr/java 
scp -r /usr/java root@slave2:/usr/java 
3. 拷贝hbase到其他节点 
scp -r /data/hbase-0.96.0-hadoop2/ master2:/data 
scp -r /data/hbase-0.96.0-hadoop2/ slave1:/data 
scp -r /data/hbase-0.96.0-hadoop2/ slave2:/data 
4. 拷贝/etc/hosts到其他节点: 
scp /etc/hosts root@master2:/etc/hosts 
scp /etc/hosts root@slave1:/etc/hosts 
scp /etc/hosts root@slave2:/etc/hosts 
5. 拷贝/etc/profile到其他节点: 
scp /etc/profile root@master2:/etc/profile 
scp /etc/profile root@slave1:/etc/profile 
scp /etc/profile root@slave2:/etc/profile

7.启动集群:

只需要在主节点,即master1机器上执行。 
1. 格式化HDFS(namenode)第一次使用时要格式化,只需要在master1上操作. 
在master1机器上cd 到hadoop目录的sbin目录下 
#hdfs namenode -format 
[精华]Hadoop,HBase分布式集群和solr环境搭建

  1. 启动hdfs: 
    ./start-all.sh 
    这时可以查看:http://192.168.131.60:50070 (HDFS管理界面) 
    3.启动hbase, 
    启动hbase,在主节点上运行: 
    start-hbase.sh 
    附: 单独启动hmaster命令: 
    ./hbase-daemon.sh start master

  2. 查看各个节点服务启动状态: 
    Master1: 
    [精华]Hadoop,HBase分布式集群和solr环境搭建 
    Master2: 
    [精华]Hadoop,HBase分布式集群和solr环境搭建 
    Slave1: 
    [精华]Hadoop,HBase分布式集群和solr环境搭建 
    Slave2: 
    [精华]Hadoop,HBase分布式集群和solr环境搭建

5.通过浏览器访问管理页面 
http://192.168.131.60:60010 hbase管理界面 
[精华]Hadoop,HBase分布式集群和solr环境搭建
http://192.168.131.60:8088 MR管理界面(yarn的管理界面) 
[精华]Hadoop,HBase分布式集群和solr环境搭建
http://192.168.131.60:50070 hdfs的管理界面 
[精华]Hadoop,HBase分布式集群和solr环境搭建
至此,hbase集群环境搭建完成!!

8.准备solr机器

8.1 机器基础环境配置 
1.安装JDK(较为简单,具体步骤略) 
8.2 安装tomcat 
1.拷贝apache-tomcat-6.0.37.tar.gz到CentOS 的/data/tools目录下 
2.解压到/data/solr-tomcat 
#tar -xvzf apache-tomcat-6.0.37.tar.gz -C /data/solr-tomcat 
3.安装完tomcat后修改./conf/server.xml

<Connector port="8080" protocol="HTTP/1.1" 
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8"/>
  • 1
  • 2
  • 3

注:如果没有设置URIEncoding=”UTF-8”,在提交查询的select的url会出现乱码,当然也就查不到了。—看你搭配的环境,可能不用做 
4.运行tomcat 
[root@solr tools]# cd /data/solr_tomcat/apache-tomcat-6.0.37/bin/ 
[root@solr bin]# ./catalina.sh start 
Using CATALINA_BASE: /data/solr_tomcat/apache-tomcat-6.0.37 
Using CATALINA_HOME: /data/solr_tomcat/apache-tomcat-6.0.37 
Using CATALINA_TMPDIR: /data/solr_tomcat/apache-tomcat-6.0.37/temp 
Using JRE_HOME: /usr/java/jdk1.6.0_45 
Using CLASSPATH: /data/solr_tomcat/apache-tomcat-6.0.37/bin/bootstrap.jar 
浏览器访问: 
http://192.168.131.90:8080 显示apache-tomcat的页面即为安装成功. 
[精华]Hadoop,HBase分布式集群和solr环境搭建
停止Tomcat 
# ./shutdown.sh 
8.3 安装solr 
1. 拷贝solr-4.7.2.tgz到CentOS 的/data/tools目录下 
2. 解压到/data/solr-tomcat/solr 
#tar -xvzf solr-4.7.2.tgz -C /data/solr-tomcat/solr 
拷贝solr.war 
将下载的solr包下面的dist文件夹中的solr-4.7.2.war 拷贝到 tomcat的webapps 并且改名为 solr.war Tomcat会自动生成相应的文件夹运行该solr。 
把exmaple/webapps中的solr.war复制到tomcat 
[root@svn-server tmp]makdir -p /opt/tomcat/webapps 
[root@svn-server tmp]cp /opt/solr/example/webapps/solr.war /opt/tomcat/webapps/ 
复制solr/example/lib/ext下的jar包到/tomcat/../solr/WEB-INF/lib/下: 
[root@svn-server tmp]cp /opt/solr/example/lib/ext/*.jar /opt/tomcat/webapps/solr/WEB-INF/lib/

拷贝其它

新建/opt/solr-tomcat/solr文件夹,把下载的solr包中的example/solr文件夹下面的所有文件放入到/opt/solr-tomcat/solr里面。

在tomcat的bin里面新建一个solr目录 
cd /home/wujiaqi/apache-tomcat/bin/ 
mkdir solr 
5.将solr的example/solr目录下的collection1目录和solr.xml复制到tomcat的bin目录下的solr目录 
cd /home/wujiaqi/solr/example/solr/ 
cp -r collection1/ solr.xml /home/wujiaqi/apache-tomcat/bin/solr 
Solr配置MultiCore: 
首先 进入solr目录下的multicore目录: 
cd /usr/local/solr-4.6.0/example/multicore/ 
拷贝core0 core1 solr.xml 文件到/data/solr-tomcat/solr目录 
编辑solr.xml配置文件 :

<solr persistent="false">
<!--
adminPath: RequestHandler path to manage cores.
If 'null' (or absent), cores will not be manageable via request handler
-->

<cores adminPath="/admin/cores" host="${host:}" hostPort="${jetty.port:}">
<core name="core0" instanceDir="core0" />
<core name="core1" instanceDir="core1" />
<core name="core2" instanceDir="core2" />
<core name="core3" instanceDir="core3" />
</cores>
</solr>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  1. 配置指定solr的核心目录,进入tomcat 修改tomcat中的配置文件: 
    cd /usr/local/tomcat/conf/Catalina/localhost/
<?xml version="1.0" encoding="UTF-8"?>
<Context docBase="/data/solr_tomcat/apache-tomcat-6.0.37/webapps/solr.war" reloadable="true" >
<Environment name="solr/home" type="java.lang.String" value="/data/solr_tomcat/apache-tomcat-6.0.37/solr" override="true" />
</Context>
  • 1
  • 2
  • 3
  • 4

安装分词工具:IK Analyzer 2012FF_hf1 
1)把下载好的IKAnalyzer2012FF_u1.jar 上传到/opt/tomcat/webapps/solr/WEB-INF/lib 
[root@localhost lib]# pwd 
/opt/tomcat/webapps/solr/WEB-INF/lib 
2)设置IKAnalyzer中文分词 
修改/data/solr_tomcat/apache-tomcat-6.0.37/solr/core0/conf 中的schema.xml(依据搭配环境需要配置) 
详见文件: 
\配置文件\solr\solr\core0\conf\schema.xml 
这里可以下载: http://pan.baidu.com/s/1bnHbN2Z 
启动solr 
进入example目录 
运行: 
java -jar start.jar 
看到以下信息,即为solr启动成功. 
[精华]Hadoop,HBase分布式集群和solr环境搭建

这时候访问 web 页面: 
http://192.168.131.90:8080/solr/admin/ 
即可看到 solr 的 管理端: 
[精华]Hadoop,HBase分布式集群和solr环境搭建