環境:
CentOS 6.6 hadoop-2.6.0 hbase-0.98.10.1
HBase1 192.168.1.4 Master
HBase2 192.168.1.5 Slave1
HBase3 192.168.1.6 Slave2
准備工作:
新建hadoop賬戶
每台主機都需要設置
useradd hadoop passwd hadoop
切換到hadoop用戶,以下操作全部使用hadoop用戶,所有目錄的user和group均為hadoop,如果不是,手動改為hadoop
設置JAVA環境
每台主機都需要設置
參考文章:http://www.cnblogs.com/xs104/p/4478096.html
設置hosts
每台主機都需要設置
vi /etc/hosts
127.0.0.1 localhost 192.168.1.4 HBase1 192.168.1.5 HBase2 192.168.1.6 HBase3
設置無密碼ssh訪問子節點
在Master機器上(HBase1)執行:
1.在/home/hadoop目錄下新建文件夾.ssh,設置權限為700
2.生成密鑰
ssh-keygen -t rsa
連續輸入三次回車,則在.ssh文件夾內生成了id_rsa、id_rsa.pub兩個密鑰文件
3.在其他兩台機器上新建.ssh目錄並將id_rsa.pub公鑰文件復制到.ssh文件中
在其他兩台機器上新建文件夾
ssh hadoop@192.168.1.5 "mkdir /home/hadoop/.ssh;chmod 700 /home/hadoop/.ssh" ssh hadoop@192.168.1.6 "mkdir /home/hadoop/.ssh;chmod 700 /home/hadoop/.ssh"
將密鑰復制到其他兩台機器的.ssh文件夾
scp /home/hadoop/.ssh/id_rsa.pub hadoop@192.168.1.5:/home/hadoop/.ssh/id_rsa.pub scp /home/hadoop/.ssh/id_rsa.pub hadoop@192.168.1.6:/home/hadoop/.ssh/id_rsa.pub
執行第三步的時候,需要遠程連接其他兩台機器,所以會提示需要輸入hadoop賬戶的密碼
在三台機器上分別執行:
touch /home/hadoop/.ssh/authorized_keys
這樣就新建了一個authorized_keys文件,需要注意,該文件的權限為600,如果不是,手動更改
將Master上的id_rsa.pub文件添加到authorized_keys中
cat /home/hadoop/.ssh/id_rsa.pub >> /home/hadoop/.ssh/authorized_keys
這時候回到Master機器上,就可以無密碼ssh連接自己和子節點了
ssh 192.168.1.4 ssh 192.168.1.5 ssh 192.168.1.6
有時候第一連接的時候會需要輸入密碼,第二次就不需要了,如果確保前面的操作沒有錯誤,第二次還需要密碼的話,嘗試關閉防火牆,要是還不行,嘗試關閉SELinux
chkconfig iptables off #關閉selinux 編輯/etc/selinux/config 將SELINUX=enforcing改為SELINUX=disabled
至此,准備工作已經完成,開始部署hadoop。
Hadoop
在正式配置hadoop之前,需要在master本地文件系統創建以下文件夾:
/home/hadoop/dfs/name
/home/hadoop/dfs/data
/home/hadoop/tmp
開始配置,所有配置文件均在hadoop的etc/hadoop目錄下
1. hadoop-env.sh
export JAVA_HOME=你的jdk目錄
2. yarn-env.sh
export JAVA_HOME=你的jdk目錄
3. slaves
填寫所有子節點
4. core-site.xml
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://192.168.1.4:8020</value> </property> <property> <name>io.file.buffer.size</name> <value>131072</value> </property> <property> <name>hadoop.tmp.dir</name> <value>file:/home/hadoop/tmp</value> <description>Abase for other temporary directories.</description> </property> <property> <name>hadoop.proxyuser.hadoop.hosts</name> <value>*</value> </property> <property> <name>hadoop.proxyuser.hadoop.groups</name> <value>*</value> </property> <property> <name>io.native.lib.available</name> <value>true</value> </property> </configuration>
5. hdfs-site.xml
<configuration> <property> <name>dfs.namenode.secondary.http-address</name> <value>192.168.1.4:9001</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:/home/hadoop/dfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/home/hadoop/dfs/data</value> </property> <property> <name>dfs.replication</name> <value>3</value> </property> <property> <name>dfs.webhdfs.enabled</name> <value>true</value> </property> </configuration>
6. mapred-site.xml
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>mapreduce.jobhistory.address</name> <value>192.168.1.4:10020</value> </property> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>192.168.1.4:19888</value> </property> </configuration>
7. 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>192.168.1.4:8032</value> </property> <property> <name>yarn.resourcemanager.scheduler.address</name> <value>192.168.1.4:8030</value> </property> <property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>192.168.1.4:8031</value> </property> <property> <name>yarn.resourcemanager.admin.address</name> <value>192.168.1.4:8033</value> </property> <property> <name>yarn.resourcemanager.webapp.address</name> <value>192.168.1.4:8088</value> </property> </configuration>
配置完成之后,將hadoop復制到兩台子節點中
sudo scp -r /usr/local/hadoop2.6/ hadoop@192.168.1.5:/usr/local/ sudo scp -r /usr/local/hadoop2.6/ hadoop@192.168.1.6:/usr/local/
至此,所有配置完成,剩下的就是啟動驗證了
格式化hadoop
bin/hdfs namenode -format
啟動
sbin/start-all.sh
啟動之后,在Master上使用jps命令會顯示有“Jps、NameNode、SecondaryNameNode、ResourceManager”四個進程。在slave上使用jps命令會顯示有“DataNode、Jps、 NodeManager”三個進程。
HBase
安裝需要注意以下幾點:
1. 已經配置JDK環境
2. hadoop已經正確安裝
3. ssh必須安裝啟動
4. 各個主機時間必須相同(可容易些許的不一致)
sudo ntpdate time.nist.gov
開始配置HBase
1. 在每個節點創建hbase的臨時目錄和zookeeper目錄
2. 配置hbase-env.sh文件
修改JAVA環境
export JAVA_HOME=/usr/local/jdk1.7
啟動HBase自動的zookeeper
export HBASE_MANAGES_ZK=true
3. 配置hbase-site.xml
<configuration> <property> <name>hbase.rootdir</name> <value>hdfs://192.168.1.4:8020/hbase</value> <description>The directory shared by region servers.</description> </property> <property> <name>hbase.master</name> <value>hdfs://192.168.1.4:60000</value> </property> <property> <name>hbase.tmp.dir</name> <value>/home/hadoop/hbaseTmp</value> </property> <property> <name>hbase.cluster.distributed</name> <value>true</value> </property> <property> <name>hbase.zookeeper.property.dataDir</name> <value>/home/hadoop/zookeeper</value> </property> <property> <name>hbase.zookeeper.quorum</name> <value>HBase1,HBase2,HBase3</value> </property> </configuration>
至此,HBase安裝完成
啟動hbase
bin/start-hbase.sh