因爲項目的須要,hadoop2.2.0與hbase0.98.5的集羣搭建已經有一段時間了。今日從新研究了一遍整個集羣的搭建,對整個搭建過程有了進一步的理解。html
ssh-keygen
生成密鑰,並使用ssh-copy-id
將公鑰拷貝到其餘機器。注意主節點本身也須要安裝ssh server
,而且本身對本身也要能無密碼登陸JAVA_HOME
的設置之前搭建這個平臺主要是使用hbase做爲存儲數據庫,因此只使用了hadoop的hdfs。其核心配置文件有三個:hadoop-env.sh
,core-site.xml
,hdfs-site.xml
。(固然,yarn框架也使用到了hadoop-env.sh
和core-site.xml
,這裏分開看。)下面分開來看:java
hadoop-env.sh
這個文件主要配置如java路徑、hadoop配置文件目錄、日誌目錄等環境變量,最簡單的配置是隻修改java路徑(JAVA_HOME
)而不修改其餘。不過今天我想重啓集羣時發現stop-hdfs.sh
腳本沒法關閉集羣,網上找到的緣由是集羣進程的pid號默認放在/tmp
目錄下致使pid號的按期刪除,而管理腳本找不到pid號致使管理失敗。因而考慮將pid放到本身定義的目錄下。hadoop-env.sh文件中定義了一個HADOOP_PID_DIR
變量,因而能夠簡單地在.bashrc
文件中加入該變量便可。若是不行,在hadoop-env.sh
中直接定義該變量。node
core-site.xml
這個文件核心設置以下:web
xml<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> <description>指明瞭默認的hdfs的路徑和端口。在HBase指明在hdfs上的存儲位置時用的就是這個路徑</description> </property> <property> <name>hadoop.tmp.dir</name> <value>/home/user/tmp/hadoop</value> <description>hadoop的一些臨時文件存放目錄。其餘一些目錄也使用了該目錄做爲基礎</description> </property> </configuration>
我配置了這兩個參數後系統就能夠正常工做了。詳細的官網配置地址在此處。算法
xml<configuration> <property> <name>dfs.namenode.name.dir</name> <value>/home/user/tmp/hadoop/dfs/name</value> <description>名字節點數據的存放目錄</description> </property> <property> <name>dfs.datanode.data.dir</name> <value>/home/user/tmp/hadoop/dfs/data</value> <description>數據節點數據的存放目錄</description> </property> <property> <name>dfs.replication</name> <value>3</value> <description>hdfs備份的數目</description> </property> </configuration>
配置很簡單。詳細配置在此處。數據庫
hadoop 2.2.0採用了第二代架構yarn,和第一代相比有着不小的改變。其配置文件有yarn-env.sh
,yarn-site.xml
,mapred-site.xml
。apache
yarn-env.sh
這個文件也是設置如java路徑等環境變量。能夠在文件中或者直接在.bashrc
中設置如JAVA_HOME
或者YARN_PID_DIR
(設置pid的存放目錄)等變量。pid默認存放在/tmp
目錄下,丟失也會致使stop-yarn.sh
等腳本的失效。(stop-yarn.sh
腳本實際上調用的是yarn-daemon.sh
,其中能夠發現YARN_PID_DIR
變量)。segmentfault
yarn-site.xml
核心配置以下:bash
xml<configuration> <property> <name>yarn.resourcemanager.hostname</name> <value>localhost</value> <description>resourcemanager的主機名。默認爲0.0.0.0。被不少其餘的參數做爲基礎</description> </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>
如上的三條配置便可成功運行。詳細配置見此處。架構
xml<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>mapreduce.jobhistory.address</name> <value>localhost:10020</value> </property> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>localhost:19888</value> </property> </configuration>
該配置文件主要配置如下和mapreduce任務相關的配置。甚至後面兩條關於address的配置也不是必須的,不過我沒去嘗試。完整配置在這裏。
其餘配置文件包括slaves
,masters
。很簡單,不詳述。
配置完成後使用scp命令同步到其餘節點。先使用hadoop namenode -format
格式化名字節點後,在啓動腳本start-dfs.sh
看是否成功。
前一段時間安裝的hbase用的是自帶的zookeeper
。後來發現仍是獨立配置zookeeper要方便些,因而就接觸了一下zookeeper
的安裝。其配置文件只有zoo.cfg,官網給出的單機配置以下:
configurationtickTime=2000 dataDir=/home/user/tmp/zookeeper clientPort=2181
集羣配置也不復雜,官網很詳細,也不贅述。有一點注意的是集羣數目最好是奇數。因爲其選舉的算法,奇數是最優的。
zookeeper默認的啓動日誌zookeeper.out
是放在當前目錄下的(zkEnv.sh中設置ZOO_LOG_DIR
變量,zkServer.sh中指定zookeeper.out文件),因此能夠在zkEnv.sh中設置ZOO_LOG_DIR變量指定本身的日誌存放路徑。
啓動使用zkServer.sh start
命令。
hbase的配置文件有hbase-env.sh
和hbase-site.xml
。其餘的配置如regionservers
很簡單,不贅述。hbase配置時還須要注意調整hosts
文件以及系統的打開文件數目等的限制。見個人上次總結。
hbase-env.sh
最好在其中設置JAVA_HOME
而不是用系統的JAVA_HOME
參數(官方文檔好像有提到這一點)。能夠在其中設置HBASE_PID_DIR
以修改pid的存放路徑。因爲使用獨立的zookeeper,還須要設置export HBASE_MANAGES_ZK=false
來禁止使用自帶的zookeeper。
hbase-site.xml
xml<configuration> <property> <name>hbase.rootdir</name> <value>hdfs://localhost:9000/hbase</value> <description>hbase數據存放位置。這裏是放在了hdfs上。</description> </property> <property> <name>hbase.tmp.dir</name> <value>/home/user/tmp/hbase</value> <description>hbase的一些臨時文件存放目錄。</description> </property> <property> <name>hbase.cluster.distributed</name> <value>true</value> <description>設置爲分佈式</description> </property> <property> <name>hbase.zookeeper.quorum</name> <value>localhost</value> <description>設置zookeeper的集羣。若是是獨立zookeeper,則此處填寫zookeeper集羣的每臺機器,用逗號隔開;若是是自帶zookeeper,則填寫要啓動zookeeper服務的機器列表。自帶zookeeper不要忘了設置hbase.zookeeper.property.dataDir設置臨時文件存放目錄</description> </property> </configuration>
hbase-site.xml的完整配置見此處。
此處把整個集羣安裝的配置過了一遍,僅僅包含了最小化的設置。更爲具體專業的設置還須要本身進一步深刻學習瞭解。