apache-hadoop-1.2.1、hbase、hive、mahout、nutch、solr安装教程
1?軟件環境:
VMware8.0
Ubuntu-12.10-desktop-i386
jdk-7u40-linux-i586.tar.gz
hadoop-1.2.1.tar.gz
eclipse-dsl-juno-SR1-linux-gtk.tar.gz
hadoop-eclipse-plugin-1.2.1.jar
apache-maven-2.2.1-bin.tar.gz
hbase-0.94.11.tar.gz
hive-0.10.0.tar.gz
mahout-distribution-0.8.tar.gz
apache-tomcat-7.0.42.tar.gz
apache-nutch-1.2-bin.tar.gz
solr-4.4.0.tgz
2?角色配置:
master節點:master
slave節點:slave01
3?Hadoop完全分布式集群配置
3.1?下載安裝JDK
3.1.1 下載jdk-7u40-linux-i586.tar.gz
3.1.2 在/usr/下新建文件夾java
$cd?/usr
$sudo mkdir java
3.1.3 解壓jdk-7u40-linux-i586.tar.gz在java文件夾下
3.1.4 配置環境變量
$sudo gedit /etc/profile? //在最后加入
export JAVA_HOME=/usr/java/jdk1.7.0_40
export JRE_HOME=/usr/java/jdk1.7.0_40/jre
exportPATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
exportCLASSPATH=$CLASSPATH:.:$JAVA_HOME/lib:$JRE_HOME/lib
source?/etc/profile //使環境變量生效
3.1.5 修改系統默認的jdk
$sudo update-alternatives --install/usr/bin/java java /usr/java/jdk1.7.0_40/bin/java 300
$sudo update-alternatives --install/usr/bin/javac javac /usr/java/jdk1.7.0_40/bin/javac 300
$sudoupdate-alternatives --config java
$sudoupdate-alternatives --config javac
3.1.6 檢查安裝是否成功
$java-version
3.2?SSH安裝及設置
通過ssh安全協議master與slaves之間進行通信,實現hadoop完全分布式部署。
3.2.1 ifconfig 查看主機ip:
這里:
master:10.10.20.103
slave01:10.10.20.101
3.2.2在hosts文件中加上集群中所有機器的IP地址及其對應的主機名
在namenode(這里為master)上:$ sudo gedit /etc/hosts
127.0.0.1??? ??????? ?localhost
10.10.20.103???? ?master
10.10.20.101??? slave01
3.2.3 ping測試
每臺機器互ping ip地址和主機名,看是否可以ping通。
3.2.4 安裝設置ssh(說明:每臺電腦上都要安裝ssh)
3.2.4.1在namenode(master)上:?
$ sudo apt-get install ssh //安裝ssh(這步在每臺電腦上都要執行!)?
$ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa//生成密鑰(這里密碼為空) 文件如:id_dsa? id_dsa.pub
$cat ~/.ssh/id_dsa.pub >>~/.ssh/authorized_keys????//加入受信列表
$ ssh localhost 或者 ssh master //第一次需輸入"yes",成功就能無密碼訪問 這個是進行的本地測試
3.2.4.2把master上的id_dsa.pub 文件追加到slave01的authorized_keys 內:
拷貝master的id_dsa.pub文件到slave01:
$ scp id_dsa.pub hadoop@slave01:/home/hadoop/Desktop
?//如果拷貝到其它目錄下,可能會出現permission denied錯誤,如拷貝到home下,這是因為其它用戶沒有寫權限
3.2.4.3在datanode(這里為slave01)上:
進入/home/hadoop/Desktop目錄執行:
$ cat id_dsa.pub >> .ssh/authorized_keys
//可以在master上不輸入密碼直接訪問slave01
說明:1、若要實現datanode無密碼訪問namenode,只需按照上面的步驟將datanode的*.pub文件復制到namenode上,并追加到authorized_keys中?
3.3安裝hadoop
注意:由于Hadoop要求所有機器上hadoop的部署目錄結構要相同,并且都有一個相同的用戶名的帳戶。
我的為:/usr/hadoop/
3.3.1在namenode上
cd ?/usr/hadoop
tar -xzvf hadoop-1.2.1.tar.gz?//將壓縮包解壓到/usr/hadoop/hadoop-1.2.1
配置hadoop-1.2.1/conf 下的 hadoop-env.sh文件將????????????????????? # exportJAVA_HOME=/usr/lib/j2sdk1.5-sun 改為:exportJAVA_HOME=/usr/java/jdk1.7.0_40
配置hadoop-1.2.1/conf下的slaves文件,一行一個DataNode,格式為:??????? 用戶名@hostip? slave01@slave01?//必須這樣寫
修改masters文件內容為: master? //也可以是namenode的ip,由于在/etc/hosts中設置了matraxa與ip的對應,可以寫為master
配置hadoop-1.2.1/conf下的三個xml文件
修 改 core-site.xml
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
</property>
修改 mapred-site.xml
<property>
<name>mapred.job.tracker</name>
<value>master:9001</value>
</property>
修改hdfs-site.xml
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>???
<name>hadoop.tmp.dir</name>???
<value>/usr/hadoop/hadoop_tmp_dir/</value>???
</property>??
<property>??
?<name>dfs.permissions</name>??
? <value>false</value>??
</property>??
g)進入/usr/hadoop/hadoop-1.2.1
bin/hadoop namenode -format //必需初始化? 只需要初始化namenode
h)bin/start-all.sh? //啟動namdnode
3.3.2在datanode(這里為slave01)上:
注意:由于Hadoop要求所有機器上hadoop的部署目錄結構要相同,并且都有一個相同的用戶名的帳戶。
我的為:/usr/hadoop/
a)???????在slave01機器上建立了一個錄:/usr/hadoop。
將master機器上/usr/hadoop /hadoop-1.2.1文件夾拷貝到slave機器上的/usr/hadoop/??????????????????????????????????????????????????????命令為:scp -r /usr/hadoop /hadoop-1.2.1 slave01@10.10.20.101:/usr/hadoop/
/etc/hosts和namenode的一樣? //參照3.1.2
3.3.3、啟動Hadoop
a)???????格式化namenode:啟動之前要先格式化namenode,進入/usr/hadoop /hadoop-1.2.1目錄,執行下面的命令:bin/hadoop namenode –format
啟動namenode:執行命令bin/start-all.sh
停止Hadoop:執行如下命令:bin/stop-all.sh
注意:如果datanode無法啟動,先檢查conf/masters,conf/slaves,然后嘗試刪除所有節點的hadoop.tmp.dir
3.4安裝eclipse
a)???????下載eclipse-dsl-juno-SR1-linux-gtk.tar.gz
解壓到 /usr/ 目錄
進入/?usr/eclipse
命令行輸入./eclipse 即可打開eclipse
3.5安裝hadoop的eclipse插件
利用eclipse開發,需安裝hadoop-eclipse插件。
a)???????下載hadoop-eclipse-plugin-1.2.1.jar,將其復制到eclipse安裝目錄下的plugins目錄中。
重啟eclipse,配置hadoop installation directory。如果安裝插件成功,打開Window-->Preferens,會發現Hadoop Map/Reduce選項,在這個選項里你需要配置Hadoop installationdirectory。配置完成后退出。?
?
在Map/Reduce Locations(Eclipse界面的正下方)中新建一個Hadoop Location。在這個View中,點擊鼠標右鍵-->New Hadoop Location。在彈出的對話框中你需要配置Location name,可任意填,如Hadoop,以及Map/Reduce Master和DFS Master。這里面的Host、Port分別為你在mapred-site.xml、core-site.xml中配置的地址及端口。我的這兩個文件中配置如下:?
設置完成后,點擊Finish就應用了該設置。然后,在最左邊的Project Explorer中就能看到DFS的目錄,如下圖所示:
?
4安裝maven
a)???????下載apache-maven-2.2.1-bin.tar.gz
解壓在/usr/ 目錄下
sudo gedit/etc/profile加入環境變量
export MAVEN_HOME=/usr/apache-maven-2.2.1
export PATH=$PATH:MAVEN_HOME/bin
mvn –version
出現如下信息即成功
?
5安裝hbase
a)???????解壓hbase-0.94.11.tar.gz到/usr/hadoop??????????????????????????????? 解壓命令:$tar zxvf hbase-0.94.11.tar.gz
b)???????配置/usr/hadoop/hbase-0.94.11/conf下文件hbase-env.sh????????????????? 用gedit打開hbase-env.sh修改
文件未尾加:
# Tell HBasewhether it should manage it's own instance of Zookeeper or not.
exportHBASE_MANAGES_ZK=true
?export JAVA_HOME=/usr/java/jdk1.6.0_20
配置/usr/hadoop/hbase-0.94.11/conf下文件hbase-site.xml
<?xmlversion="1.0"?>
<?xml-stylesheettype="text/xsl" href="configuration.xsl"?>
?
<configuration>
<property>
??? <name>hbase.rootdir</name>
???<value>hdfs://master:9000/hbase</value>
</property>
<property>
???<name>hbase.cluster.distributed</name>
??? <value>true</value>
</property>
<property>
??? <name>hbase.master.port</name>
??? <value>60000</value>
? </property>
<property>
?????<name>hbase.zookeeper.quorum</name>
????? <value>master,slave01</value>
</property>
</configuration>
u?hbase.rootdir設置hbase在hdfs上的目錄,主機名為hdfs的namenode節點所在的主機
u?hbase.cluster.distributed設置為true,表明是完全分布式的hbase集群
u?hbase.master設置hbase的master主機名和端口
u?hbase.zookeeper.quorum設置zookeeper的主機,官方推薦設置為3,5,7比較好,奇數。
d)??????配置/usr/hadoop/hbase-0.94.11/conf下文件regionservers
slave01
e)???????設置環境變量,用gedit打開/etc/profile文件在文件未尾添加:
export HBASE_HOME=/usr/hadoop/hbase-0.94.11
exportPATH=$PATH:$HBASE_HOME/bin
f)????????在完成以上修改之后,把master上的hbase-0.94.11原樣復制到slave01上,保證目錄結構一致,可使用如下命令:
scp –r /usr/hadoop/hbase-0.94.11 slave01@slave01: /usr/hadoop/hbase-0.94.11
c)???????啟動Hbase(首先要啟動hadoop)
bin/start-hbase.sh
bin/stop-hbase.sh
登陸http://master:60010,出現如下圖,說明hbase分布式搭建成功。
?
u?permission denied的解決方法
如果想讓bin下的所有文件都可執行
則 chmod a+x bin/*
6?安裝hive
Hive只需要在master主機上安裝
a)??????解壓hive-0.10.1.gar.gz到/usr/hadoop下
b)?????用gedit打開/etc/profile配置環境變量
exportHIVE_HOME=/usr/hadoop/hive-0.10.0
exportHIVE_CONF_DIR=/usr/hadoop/hive-0.10.0/conf
export PATH=$PATH:$HIVE_HOME/bin
c)??????進入HIVE_HOME運行bin/hive 出現hive shell 命令行說明安裝成功。
支持多用戶會話,需要一個獨立的元數據庫,常用的是使用MySQL作為元數據庫。
a)??????sudoapt-get install mysql-server mysql-client安裝mysql
完成后通過netstat –tap |grep mysql 來車看是否已經有了mysql服務,如下圖即成功。
?
b)?????為hive建立相應的mysql賬號:
進入mysql: mysql –u root –p
mysql> create user 'hive'@’localhost’identified by '123';
Query OK, 0 rows affected (0.00 sec)
?
mysql> GRANT ALL PRIVILEGES ON *.* TO 'hive'@'localhost'IDENTIFIED BY '123' WITH GRANT OPTION;?
Query OK, 0 rows affected (0.00 sec)
?
mysql>?flush privileges;
Query OK, 0rows affected (0.00 sec)
?
mysql> exit
Bye
如果出現新建用戶denied的情況,是因為user表里面已經存在該用戶。之后刪除用戶再并且可以附加flush privileges之后再新建。用新用戶登錄不進去可以嘗試刪除mysql的匿名用戶。注意host的是localhost或者是127.0.0.1或者不填。
c)??????從客戶端用hive賬號登陸mysql
mysql –u hive -p
d)?????建立hive的元數據庫
mysql>create database hive;
e)??????mysql中保存了hive的元數據信息,包括表的屬性、桶信息和分區信息等,以hive帳號登陸hive查看元數據信息
?
f)??????配置Hive
?在Hive安裝目錄的conf目錄下,將hive-default.xml.template復制一份命名為:hive-site.xml
修改以下內容,配置上mysql數據連接、驅動、用戶名和密碼
<property>
??<name>hive.metastore.local</name>
??<value>false</value>
</property>
<property>
??<name>javax.jdo.option.ConnectionURL</name>
??<value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>
</property>
<property>
??<name>javax.jdo.option.ConnectionDriverName</name>
??<value>com.mysql.jdbc.Driver</value>
</property>
<property>
??<name>javax.jdo.option.ConnectionUserName</name>
??<value>hive</value>
</property>
<property>
??<name>javax.jdo.option.ConnectionPassword</name>
??<value>123</value>
</property>?
g)?????把mysql的驅動包mysql-connector-java-5.1.15拷貝到Hive安裝路徑下的lib目錄
h)?????進入Hive,沒報錯說明安裝成功
7 hive與hbase的整合(用hive讀取hbase的數據)
Hive是基于Hadoop的一個數據倉庫工具,可以將結構化的數據文件映射為一張數據庫表,并提供完整的sql查詢功能,可以將sql語句轉換為MapReduce任務進行運行。 其優點是學習成本低,可以通過類SQL語句快速實現簡單的MapReduce統計,不必開發專門的MapReduce應用,十分適合數據倉庫的統計分析。Hive與HBase的整合功能的實現是利用兩者本身對外的API接口互相進行通信,相互通信主要是依靠hive_hbase-handler.jar工具類, 大致意思如圖所示:
?
3.8.1整合hive與hbase的過程如下:
a)?????????將文件/usr/hadoop/hive-0.10.0/hbase-0.94.11.jar 與/usr/hadoop/hive-0.10.0/lib/zookeeper-3.4.5.jar拷貝到/usr/hadoop/hive-0.10.0/lib文件夾下面
注意:如果hive/lib下已經存在這兩個文件的其他版本(例如zookeeper-3.3.1.jar),建議刪除后使用hbase下的相關版本
b)????????修改hive/conf下hive-site.xml文件,在底部添加如下內容:
<property>
<name>hive.querylog.location</name>
<value>/usr/hadoop/hive-0.10.0/logs</value>
</property>
<property>
<name>hive.aux.jars.path</name>
<value>file:///usr/hadoop/hive-0.10.0/lib/hive-hbase-handler-0.10.0.jar,file:///usr/hadoop/hive-0.10.0/lib/hbase-0.94.11.jar,file:///usr/hadoop/hive-0.10.0/lib/zookeeper-3.4.5.jar</value>
</property>
注意:如果hive-site.xml不存在則自行創建,或者把hive-default.xml.template文件改名后使用。
c)?????????拷貝hbase-0.94.11.jar到所有hadoop節點(包括master)的usr/hadoop/hadoop-1.2.1/lib下。
d)????????拷貝usr/hadoop/hbase-0.94.11/conf下的hbase-site.xml文件到所有hadoop節點(包括master)的usr/hadoop/hadoop-1.2.1/conf下。
注意,如果3,4兩步跳過的話,運行hive時很可能出現如下錯誤:org.apache.hadoop.hbase.ZooKeeperConnectionException:HBase is able to connect to ZooKeeper but the connection closes immediately.
This could be a sign that the server has too many connections (30 is thedefault). Consider inspecting your ZK server logs for that error and
then make sure you are reusing HBaseConfiguration as often as you can. SeeHTable's javadoc for more information. at org.apache.hadoop.
hbase.zookeeper.ZooKeeperWatcher.
e)?????????啟動hive
單節點啟動
bin/hive -hiveconf hbase.master=master:60000
f)?????????集群啟動
bin/hive? ?
注意:如果hive-site.xml文件中沒有配置hive.aux.jars.path,則可以按照如下方式啟動。hive --auxpath /opt/mapr/hive/hive-0.7.1/lib/hive-hbase-handler-0.7.1.jar,/opt/mapr/hive/hive-0.7.1/lib/hbase-0.90.4.jar,/opt/mapr/hive/hive-0.7.1/lib/zookeeper-3.3.2.jar-hiveconf hbase.master=localhost:60000
3.8.2啟動后進行測試
a)???????創建hbase識別的表
CREATE TABLE hbase_table_1(key int, value string) STORED BY'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH SERDEPROPERTIES("hbase.columns.mapping" = ":key,cf1:val")TBLPROPERTIES ("hbase.table.name" = "xyz");
b)???????新建hive的數據表
create tablepokes(foo int,bar string)row format delimited fields terminated by ',';
c)???????批量導入數據
load data localinpath '/home/hadoop/Desktop//1.txt' overwrite into table pokes;
1.txt文件的內容為?
1,hello?
2,pear?
3,world
d)??????使用sql導入hbase_table_1
insert overwrite table hbase_table_1 select * frompokes;
e)???????查看數據
hive>select * from hbase_table_1;
OK
1 hello
2 pear
3 world
8安裝mahout
a)???????解壓mahout-distribution-0.8.tar.gz到/usr/hadoop/下
b)???????sudo/etc/profile配置環境變量
exportMAHOUT_HOME=/usr/hadoop/mahout-distribution-0.8
export HADOOP_HOME=/usr/hadoop/hadoop-1.2.1
export HADOOP_CONF_DIR=/usr/hadoop/hadoop-1.2.1/conf
export PATH=$HADOOP_HOME/bin
exportCLASSPATH=$CLASSPATH:$MAHOUT_HOME/lib:HADOOP_CONF_DIR
c)???????啟動hadoop
d)??????bin/mahout--help //檢查Mahout是否安裝完好,看是否列出了一些算法
?
9 Tomcat安裝配置
9.1下載apache-tomcat-7.0.42.tar.gz
9.2 在/usr/下新建文件夾tomcat
$cd?/usr
$sudo mkdir tomcat
9.3 解壓apache-tomcat-7.0.42.tar.gz在tomcat文件夾下
$cd /usr/tomcat
$sudo tar –zxvf apache-tomcat-7.0.42.tar.gz
解壓之后tomcat文件夾下會生成一個叫做apache-tomcat-7.0.42的文件夾
9.4 配置環境變量
$sudo gedit /etc/profile,加入以下紅色部分
export JAVA_HOME=/usr/java/jdk1.7.0_40
export HADOOP_HOME=/usr/hadoop/hadoop-1.2.1
exportHADOOP_CONF_DIR=/usr/hadoop/hadoop-1.2.1/conf
exportMAHOUT_HOME=/usr/hadoop/mahout-distribution-0.8
exportMAVEN_HOME=/usr/maven/apache-maven-2.2.1
exportCATALINA_HOME=/usr/tomcat/apache-tomcat-7.0.42
export HIVE_HOME=/usr/hadoop/hive-0.10.0
export HBASE_HOME=/usr/hadoop/hbase-0.94.11
exportPATH=$JAVA_HOME/bin:$MAHOUT_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/conf:$MAVEN_HOME/bin:$CATALINA_HOME/bin:$HIVE_HOME/bin:$HBASE_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$MAHOUT_HOME/lib:$HADOOP_HOME/lib:$HADOOP_CONF_DIR:$MAVEN_HOME/lib:$CATALINA_HOME/lib:$HIVE_HOME/lib:$HBASE_HOME/lib:$JAVA_HOME/lib/tools.jar
$source?etc/profile //使環境變量生效
9.5檢查安裝是否成功
$cd /usr/tomcat/apache-tomcat-7.0.42
$bin/startup.sh
打開firefox,輸入http://localhost:8080,如果正常訪問,則表示成功。
10Nutch安裝及設置
10.1 下載apache-nutch-1.2-bin.tar.gz
10.2?解壓apache-nutch-1.2-bin.tar.gz在/usr/hadoop文件夾下
$cd /usr/hadoop
$sudo tar –zxvf apache-nutch-1.2-bin.tar.gz
解壓之后hadoop文件夾下會生成一個叫做nutch-1.2的文件夾
10.3 修改nutch-site.xml文件
在根目錄conf文件夾找到nutch-site.xml,打開在configuration標簽里面添加:
<property>
??? <name>http.agent.name</name>
??? <value>openlab</value>
</property>
10.4添加nutch命令到/usr/bin
$cd /usr/bin
$ln -s {nutch根目錄}/bin/nutch ./nutch
在任意目錄輸入nutch命令,有選項提示,則配置成功.
11Solr安裝及設置
11.1 下載solr-4.4.0.tgz
11.2 解壓solr-4.4.0.tgz在/usr/hadoop文件夾下
$cd /usr/hadoop
$sudo tar –zxvf solr-4.4.0.tgz
解壓之后hadoop文件夾下會生成一個叫做solr-4.4.0的文件夾
11.3將solr-4.4.0下面dist/solr-4.4.0.war拷到tomcat的webapps文件夾下面,修改為solr.war
啟動一次tomcat,在解壓出的war包文件夾里面找到WEB-INF/lib,然后把mmseg4j-all-1.8.5.jar包拷進去。
如solr.war,tomcat啟動之后會產生solr目錄。
?11.4將solr-4.4.0\example\ 下的 solr 目錄拷貝到任意位置,
我是放在:~/solr_home
11.5??在tomcat目錄下的conf\Catalina\localhost\solr.xml文件,添加如下內容:
<Context docBase="/usr/tomcat/apache-tomcat-7.0.42/webapps/solr.war"debug="0" crossContext="true" >
?? <Environment name="solr/home"type="java.lang.String" value="/home/hadoop/solr_home"override="true" />
</Context>
若目錄下沒有該solr.xml文件,則新建一個,注意還要在文件開頭添加xml頭:
<?xml version="1.0"encoding="UTF-8"?>
11.6?修改solr工作目錄conf文件夾下的配置文件solrconfig.xml
<dataDir>${solr.data.dir:/home/hadoop/solr_home/data}</dataDir>
11.7??檢查是否配置正確
首先啟動tomcat
運行localhost:8080/solr
如果成功進入,則部署成功。
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的apache-hadoop-1.2.1、hbase、hive、mahout、nutch、solr安装教程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jQuery基础之(二)jQuery中的
- 下一篇: 并发技巧清单