1.通过python编写爬虫,数据存储到hdfs当中
2.通过solr在hdfs当中建立索引并实现全文检索功能
好了,正文开始了!
一,环境搭建
0.centOS6.6 安装及配置
1.python3.4.4安装及环境变量配置
2.hadoop2.6.3安装及环境变量配置
3.solr5.5安装及配置(中文分词配置)
4.solr5.5+hdfs配置
正文
0.centOS6.6 安装及配置
安装3台虚拟机
1.安装完centOS后,第一件事:记得用root用户
yum update
2.pdsh 安装:pdsh是一款管理集群的小工具
tar -xjvf pdsh-2.26.tar.bz2 cd pdsh-2.26 ./configure --with-ssh --with-dshgoups --with-machines=/etc/dsh/machines make && make install
pdsh -V
打印pdsh版本及安装完成!
3.在每台虚拟机上修改hosts文件添加以下内容(/etc/hosts)
192.168.1.131 master 192.168.1.132 slave1 192.168.1.133 slave2
2.hadoop2.6.3安装及环境变量配置
1.解压hadoop:tar –xvzf hadoop-2.6.3.tar.gz
2.设置环境变量,在~/.bash_profile添加以下内容:
#hadoop export HADOOP_YARN_USER=hadoop export HADOOP_HOME=/software/hadoop-2.6.3 export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH export HADOOP_YARN_HOME=$HADOOP_HOME export HADOOP_MAPRED_HOME=$HADOOP_HOME export HADOOP_CONF_DIR = $HADOOP_HOME/etc/hadoop export LD_LIBRARY_PATH=$HADOOP_HOME/lib/native:$LD_LIBRARY_PATH
使环境生效,执行source ~/.bash_profile
3.设置所有者:
chown -R hadoop:hadoop hadoop-2.6.3
4.修改hadoop配置文件
首先在’/’目录下建立文件夹:hadoop,hadoop/name,hadoop/tmp,hadoop/dfs,hadoop/dfs/name,hadoop/dfs/data
设置文件夹所有者为hadoopY
①配置文件路径:/software/hadoop-2.6.3/etc/hadoop/hadoop-env.sh
export JAVA_HOME=/software/jdk1.8.0_91
②配置文件路径:/software/hadoop-2.6.3/etc/hadoop/core-site.xml
添加如下内容:
<configuration> <property> <name>hadoop.tmp.dir</name> <value>file:/hadoop/tmp</value> <description>Abasefor other temporary directories.</description> </property> <property> <name>fs.default.name</name> <value>hdfs://master:9000</value> </property> <property> <name>dfs.name.dir</name> <value>file:/hadoop/name</value> </property> </configuration>
③配置文件路径:/software/hadoop-2.6.3/etc/hadoop/hdfs-site.xml
添加如下内容:
<configuration> <property> <name>dfs.namenode.secondary.http-address</name> <value>master:9001</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:/hadoop/dfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/hadoop/dfs/data</value> </property> <property> <name>dfs.replication</name> <value>3</value> </property> <property> <name>dfs.webhdfs.enabled</name> <value>true</value> </property> <property> <name>dfs.permissions.enabled</name> <value>false</value> </property> </configuration>
④把配置文件/software/hadoop-2.6.3/etc/hadoop/mapred-site.xml重命名:mv mapred-site.xml.template mapred-site.xml
在配置文件mapred-site.xml添加如下内容:
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>mapreduce.jobhistory.address</name> <value>master:10020</value> </property> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>master:19888</value> </property> </configuration>
⑤修改配置文件:/software/hadoop-2.6.3/etc/hadoop/yarn-site.xml
添加以下内容:
<configuration> <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> <property> <name>yarn.resourcemanager.address</name> <value>master:8032</value> </property> <property> <name>yarn.resourcemanager.scheduler.address</name> <value>master:8030</value> </property> <property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>master:8035</value> </property> <property> <name>yarn.resourcemanager.admin.address</name> <value>master:8033</value> </property> <property> <name>yarn.resourcemanager.webapp.address</name> <value>master:8088</value> </property> <!-- Site specific YARN configuration properties --> </configuration>
⑥修改配置文件:/software/hadoop-2.6.3/etc/hadoop/slaves
把localhost 删除,添加以下内容:
master
slave1
slave2
5.同步配置到slave1、slave2
scp -r hadoop/ hadoop@slave1:/software/hadoop-2.6.3/etc
scp -r hadoop/ hadoop@slave2:/software/hadoop-2.6.3/etc
6.启动hadoop集群
①格式化一个新的分布式文件系统:
$ bin/hadoop namenode -format
②运行hadoop:
执行命令./start-all.sh启动hadoop
启动完成之后查看master 及slave1和slave2 的状态
[hadoop@master ~]$ jps
3297 NodeManager
2897 DataNode
4769 Jps
3205 ResourceManager
2807 NameNode
3070 SecondaryNameNode
[hadoop@slave1 ~]$ jps
2593 DataNode
3261 Jps
[hadoop@slave1 ~]$
[hadoop@slave2 ~]$ jps
3376 Jps
2612 DataNode
[hadoop@slave2 ~]$
7.进行环境测试
输入hadoop fs -mkdir /tmp
输入hadoop fs -ls /
如何显示如上图结果,及环境搭建完成!
4.solr5.5+hdfs配置
1. 下载tomcat9 及solr5.5
2.解压tomcat9级solr5.5 存放路径为tomcat9:/usr/local/solr/tomcat9
solr5.5:/usr/local/solr/solr-5.5.0
3.在tomcat的webapps中新建文件夹solr
mkdir solr
把solr-5.5.0\server\solr-webapp\webapp目录下的文件全部复制进来
cd /usr/local/solr/solr-5.5.0/server/solr-webapp/webapp/
cp -r * /usr/local/solr/tomcat9/webapps/solr/
4.在tomcat9的WEB-INF文件下新建classes文件夹,把solr-5.5.0\server\resources\log4j.properties复制到classes文件夹里,这样才能看到solr的日志。
cd /usr/local/solr/tomcat9/webapps/solr/WEB-INF/
mkdir classes
cp /usr/local/solr/solr-5.5.0/server/resources/log4j.properties /usr/local/solr/tomcat9/webapps/solr/WEB-INF/classes/
5.修改 WEB-INF/web.xml
<env-entry> <env-entry-name>solr/home</env-entry-name> <env-entry-value>/usr/local/solr/solr_home</env-entry-value> <env-entry-type>java.lang.String</env-entry-type> </env-entry>
在/usr/local/solr/目录下执行
mkdir solr_home
6.把 solr-5.5.0\server\lib\ext 下的jar包全部复制到 WEB-INF/lib目录下
cp /usr/local/solr/solr-5.5.0/server/lib/ext/*.jar /usr/local/solr/tomcat9/webapps/solr/WEB-INF/lib/
7.在solr_home(WEB-INF/web.xml指定的目录)中创建一个core_sea(名字随意),core1中创建两个文件夹,data,conf。
mkdir core_sea
mkdir core_sea/data
mkdir core_sea/conf
把 solr-5.5.0\server\solr\configsets\basic_configs\conf 里边的文件全部复制到 新建的conf文件下。
cp -r /usr/local/solr/solr-5.5.0/server/solr/configsets/basic_configs/conf/* /usr/local/solr/solr_home/core_sea/conf/
把solr-5.5.0\server\solr\solr.xml复制到solr_home目录下。
cp /usr/local/solr/solr-5.5.0/server/solr/solr.xml /usr/local/solr/solr_home/
8.结束,启动tomcat, 输入http://localhost:8080/solr/index.html 。访问正常,即成功。
/usr/local/solr/tomcat9/bin# ./startup.sh
可以看到 No cores available
没有关系,点击它,输入我们创建的core_sea,name与instanceDir均填写core_sea,其他不动,点击Add Core OK!
4.solr5.5+hdfs配置
1.打开solrconfig.xml
<directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.NRTCachingDirectoryFactory}"> </directoryFactory>
将以上代码替换如下:
<directoryFactory name="DirectoryFactory" class="solr.HdfsDirectoryFactory"> <str name="solr.hdfs.home">hdfs://localhost: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.nrtcachingdirectory.enable">true</bool> <int name="solr.hdfs.nrtcachingdirectory.maxmergesizemb">16</int> <int name="solr.hdfs.nrtcachingdirectory.maxcachedmb">192</int> </directoryFactory>
非常重要的一点:
将<lockType>${solr.lock.type:native}</lockType>
替换如下:
<lockType>${solr.lock.type:hdfs}</lockType>
2.配置hadoop hdfs的权限
配置:/usr/local/hadoop/hadoop-2.6.3/etc/hadoop/hdfs-site.xml
添加以下内容:
<property> <name>dfs.webhdfs.enabled</name> <value>true</value> </property> <property> <name>dfs.permissions.enabled</name> <value>false</value> </property>
3.完成,重新启动solr,happy。
以下为建立索引前后的目录: