hadoop+zookeeper+hbase 徹底安裝手冊

 

安裝環境:html

1. 2臺 namenode 10臺 datanodejava

3. 安裝目錄:opt/softwarenode

jdk hadoop hbase zookeeperlinux

4.. zookeeper 3臺就能夠了shell

jdk rpm -ivh jdk-8u91-linux-x64.rpmapache

 

1.  master1  修改hostname的操做:

1. 修改hostname -> http://www.cnblogs.com/dkblog/archive/2011/11/02/2233123.htmlvim

須要修改兩處:一處是       ,另外一處是/etc/hosts,只修改任一處會致使系統啓動異常。首先切換到root用戶。服務器

1.1 vi /etc/sysconfig/network

用任一款你喜好的編輯器打開該文件,裏面有一行 HOSTNAME=localhost.localdomain (若是是默認的話),修改 localhost.localdomain 爲你的主機名。併發

1.2  vi /etc/hosts

注: etc/hosts 這個文件是負責dns 解析的 將hostname 和 ip對應起來的  好比ping slave1 機器會知道對應的ipdom

在文件末尾加上 192.168.150.20 20-master1

reboot

!!!!!!!以root身份直接在/etc/ssh/sshd_config中找到#PermitRootLogin = yes ,將其去掉重啓就能夠了。

!!!!!!!發現winscp 調用putty很差用 直接啓動putty就能夠登錄

1.3 修改slave 的hostname

將192.168.150.23 -> slave11 ping 測試鏈接 master 和 slave 互ping hostname 若是通了 證實能夠連通了

2.  SSH master 無密碼登錄 全部slave

注: 部分例子中hadoop用戶自動忽略成root用戶

具體來說就是 兩步 : 1. 生成公鑰私鑰 2. 想免密碼登錄誰就將公鑰加到誰的author..keys中

2.1 SSH無密碼原理 

Master(NameNode | JobTracker)做爲客戶端,要實現無密碼公鑰認證,鏈接到服務器Salve(DataNode | Tasktracker)上時,須要在Master上生成一個密鑰對,包括一個公鑰和一個私鑰,然後將公鑰複製到全部的Slave上。當Master經過SSH鏈接Salve時,Salve就會生成一個隨機數並用Master的公鑰對隨機數進行加密,併發送給Master。Master收到加密數以後再用私鑰解密,並將解密數回傳給Slave,Slave確認解密數無誤以後就容許Master進行鏈接了。這就是一個公鑰認證過程,其間不須要用戶手工輸入密碼。重要過程是將客戶端Master複製到Slave上。

總的來講就是用master的公鑰在slave上加密,而後傳回mater後用master本身的私鑰解密創建鏈接 記住永遠是要用本身的私鑰解密

2.2 Master機器上生成密碼對 

   在Master節點上執行如下命令

ssh-keygen –t rsa –P ''

  這條命是生成其無密碼密鑰對,詢問其保存路徑時直接回車採用默認路徑。生成的密鑰對:id_rsa和id_rsa.pub,默認存儲在"/root/.ssh"目錄下。

查看"/home/hadoop/"下是否有".ssh"文件夾,且".ssh"文件下是否有兩個剛生產的無密碼密鑰對。

 接着在Master節點上作以下配置,把id_rsa.pub追加到受權的key裏面去。

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

 

2.3 設置SSH配置 

  用root用戶登陸服務器修改SSH配置文件"/etc/ssh/sshd_config"的下列內容。

 

RSAAuthentication yes # 啓用 RSA 認證

PubkeyAuthentication yes # 啓用公鑰私鑰配對認證方式

AuthorizedKeysFile .ssh/authorized_keys # 公鑰文件路徑(和上面生成的文件同)

  設置完以後記得重啓SSH服務,才能使剛纔設置有效。

service sshd restart

  退出root登陸,使用普通用戶驗證是否成功。

ssh localhost

從上圖中得知無密碼登陸本級已經設置完畢,接下來的事兒是

2.4把公鑰複製全部Slave機器上。使用下面的命令格式進行復制公鑰:

scp ~/.ssh/id_rsa.pub 23-slave11:~/

由於我以前能ping通 第一臺slave機器 192.168.150.23 在hosts中命名爲23-slave11

因此我直接用scp將公鑰進行復制:

2.5下面就針對這個23 這個slave進行配置:

1查看slave11 中是否有這個公鑰

由於還沒配置好,登錄的時候仍是須要密碼的

能夠看到公鑰已經存進去了 id_rsa.pub

2在/root/下面建立.ssh文件夾

mkdir ~/.ssh

而後是修改文件夾".ssh"的用戶權限,把他的權限修改成"700",用下面命令執行:

chmod 700 ~/.ssh

 

3)追加到受權文件"authorized_keys

  到目前爲止Master的公鑰也有了,文件夾".ssh"也有了,且權限也修改了。這一步就是把Master的公鑰追加到Slave11的受權文件"authorized_keys"中去。使用下面命令進行追加並修改"authorized_keys"文件權限:

cat ~/id_rsa.pub >> ~/.ssh/authorized_keys

chmod 600 ~/.ssh/authorized_keys

  4)用root用戶修改"/etc/ssh/sshd_config"

  具體步驟參考前面Master的"設置SSH配置",具體分爲兩步:第1是修改配置文件;第2是重啓SSH服務。

修改配置文件:

 用root用戶登陸服務器修改SSH配置文件"/etc/ssh/sshd_config"的下列內容。 

RSAAuthentication yes # 啓用 RSA 認證

PubkeyAuthentication yes # 啓用公鑰私鑰配對認證方式

AuthorizedKeysFile .ssh/authorized_keys # 公鑰文件路徑(和上面生成的文件同)

service sshd restart

3.  ssh 配置slave 免密碼登錄 master

和Master無密碼登陸全部Slave原理同樣,就是把Slave的公鑰追加到Master的".ssh"文件夾下的"authorized_keys"中,記得是追加(>>)

以slave11 登錄 master1 爲例

3.1       首先建立slave11 本身的公鑰和私鑰

建立"Slave1.Hadoop"本身的公鑰和私鑰,並把本身的公鑰追加到"authorized_keys"文件中。

1. 生成公鑰私鑰 鑰匙對

ssh-keygen -t rsa -P ''

2 並把本身的公鑰追加到"authorized_keys"文件中。用到的命令以下:

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

3. 追加到"Master.Hadoop"的"authorized_keys"中:

scp ~/.ssh/id_rsa.pub     20-master1:~/

 2)在"Master.Hadoop"服務器的操做 

  用到的命令以下:

cat ~/id_rsa.pub >> ~/.ssh/authorized_keys

至此一個master slave對能夠互相訪問了

4.  Java 環境安裝

4.1       安裝jdk

注: 本例中全部的軟件都安裝在/opt/software/下面

下載jdk 1.8 本例中有機器上面有jdk的rpm包

我直接scp過來了

scp jdk-8u91-linux-x64.rpm 60.12.160.158:~

切到20-master1 直接 rpm –ivh jdk-8u91-linux-x64.rpm

jdk 1.8 會安裝到/usr/java下面

4.2       配置環境變量

編輯"/etc/profile"文件,在後面添加Java的"JAVA_HOME"、"CLASSPATH"以及"PATH"內容。

1)編輯"/etc/profile"文件 

vim /etc/profile

2)添加Java環境變量 

  在"/etc/profile"文件的尾部添加如下內容:

# set java environment

export JAVA_HOME=/usr/java/jdk1.8.0_91

export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin

3)使配置生效 

  保存並退出,執行下面命令使其配置當即生效。

source /etc/profile

4)使配置生效

java –version 發現jdk 仍是 1.7 的

緣由是原來機器上安裝了openjdk 1.7  因此咱們要先卸載openjdk

直接用 rpm -qa | grep java

查找安裝過的java 包

而後用命令:

yum -y remove 卸載

好比:

卸載完成後發現 java –version 已經無論用了

此後再安裝 jdk 1.8

rpm –ivh jdk-8u91-linux-x64.rpm 就能夠了

5.  Hadoop集羣的安裝

全部的機器上都要安裝hadoop,如今就先在Master服務器安裝,而後其餘服務器按照步驟重複進行便可。安裝和配置hadoop須要以"root"的身份進行。

5.1       安裝hadoop

安裝hadoop到 /opt/software下

解壓 hadoop.gz

tar -zxvf hadoop-2.5.2.tar.gz

給hadoop-2.5.2建立軟連接

ln -s hadoop-2.5.2 hadoop

效果以下:

5.2       配置hadoop

5.2.1 配置環境變量

把Hadoop的安裝路徑添加到"/etc/profile"中,修改"/etc/profile"文件(配置java環境變量的文件),將如下語句添加到末尾,並使其有效:

# set hadoop path

export HADOOP_HOME=/opt/software/hadoop

export PATH=$PATH:$HADOOP_HOME/bin 

重啓配置文件

Source /etc/profile

5.2.2 配置conf

1)配置hadoop-env.sh 和 yarn-env.sh

該"hadoop-env.sh"文件位於"/opt/software/hadoop/etc/hadoop"目錄下。

在文件的末尾添加下面內容 JAVA_HOME

# set java environment

export JAVA_HOME=/usr/java/jdk1.8.0_91


yarn-env.sh:

也是配置JAVA_HOME

Hadoop配置文件在conf目錄下,以前的版本的配置文件主要是Hadoop-default.xml和Hadoop-site.xml。因爲Hadoop發展迅速,代碼量急劇增長,代碼開發分爲了core,hdfs和map/reduce三部分,配置文件也被分紅了三個core-site.xml、hdfs-site.xml、mapred-site.xml。core-site.xml和hdfs-site.xml是站在HDFS角度上配置文件;core-site.xml和mapred-site.xml是站在MapReduce角度上配置文件。

2)配置core-site.xml文件 

  修改Hadoop核心配置文件core-site.xml,這裏配置的是HDFS的地址和端口號。

    首先在hadoop根目錄下建立一個tmp文件 備用 

<configuration>

    <property>

        <name>hadoop.tmp.dir</name>

        <value>/opt/software/hadoop/tmp</value>

        <description>A base for other temporary directories.</description>

    </property>

<!-- file system properties -->

    <property>

        <name>fs.defaultFS</name>

        <value>hdfs://20-master1:9000</value>

    </property>

</configuration>

備註:如沒有配置hadoop.tmp.dir參數,此時系統默認的臨時目錄爲:/tmp/hadoo-hadoop。而這個目錄在每次重啓後都會被幹掉,必須從新執行format才行,不然會出錯。

3)配置hdfs-site.xml 文件 

在master的命令行終端執行以下命令建立hadoop的數據文件保存目錄及元數據保存目錄:

1. mkdir /opt/software/hadoop/hadoopdata

2. mkdir /opt/software/hadoop/hadoopname

Vi hdfs-site.xml:

在文件的<configuration></configuration>加入以下內容,保存退出

<configuration>

<property>

<name>dfs.namenode.name.dir</name>

<value>file:/opt/software/hadoop/hadoopdata/namenode</value>

</property>

<property>

<name>dfs.datanode.data.dir</name>

<value>file:/opt/software/hadoop/hadoopdata/datanode</value>

</property>

<property>

<name>dfs.namenode.secondary.http-address</name>

<value>21-master2:9001</value>

</property>

</configuration>

4)配置mapred-site.xml文件 

修改Hadoop中MapReduce的配置文件,配置的是JobTracker的地址和端口。

<configuration>

        <property>

                <name>mapred.tasktracker.map.tasks.maximum</name>

                <value>240</value>

                <final>true</final>

        </property>

        <property>

                <name>mapred.tasktracker.reduce.tasks.maximum</name>

                <value>48</value>

                <final>true</final>

        </property>

<property>

      <name>mapreduce.map.memory.mb</name>

      <value>6000</value>

  </property>

  <property>

      <name>mapreduce.reduce.memory.mb</name>

      <value>8000</value>

  </property>

  <property>

      <name>mapreduce.map.java.opts</name>

      <value>-Xmx5900m</value>

  </property>

  <property>

      <name>mapreduce.reduce.java.opts</name>

      <value>-Xmx7900m</value>

  </property>

<property>

 

<name>mapreduce.framework.name</name>

 

<value>yarn</value>

 

</property>

 

</configuration>

 

效果以下:

 

5)配置yarn-site.xml文件

 

 

 

<configuration>

 

<property>

 

<name>yarn.scheduler.minimum-allocation-mb</name>

 

<value>4096</value>

 

</property>

 

<!-- Site specific YARN configuration properties -->

 

<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.resource-tracker.address</name>

 

<value>20-master1:8025</value>

 

</property>

 

<property>

 

<name>yarn.resourcemanager.scheduler.address</name>

 

<value>20-master1:8030</value>

 

</property>

 

<property>

 

<name>yarn.resourcemanager.address</name>

 

<value>20-master1:8040</value>

 

</property>

 

<property>

 

<name>yarn.nodemanager.log-dirs</name>

 

<value>/opt/software/hadoop/logs/userlogs</value>

 

</property>

 

<property>

 

<name>yarn.nodemanager.vmem-check-enabled</name>

 

<value>false</value>

 

<description>Whether virtual memory limits will be enforced for containers</description>

 

</property>

 

<property>

 

<name>yarn.nodemanager.pmem-check-enabled</name>

 

<value>false</value>

 

<description>Whether virtual memory limits will be enforced for containers</description>

 

</property>

 

<property>

 

<name>yarn.nodemanager.vmem-pmem-ratio</name>

 

<value>4</value>

 

<description>Ratio between virtual memory to physical memory when setting memory limits for containers</description>

 

</property>

 

</configuration> 

 

6)配置slaves文件

 

23-slave11

24-slave12

25-slave13

slave4

slave5

slave6

slave7

slave8

slave9

slave10

 

注:本來是以ip地址的最後一組數字+slave編號命名的slave,可是發現名字太長了,因此該爲直接slave+num了

 

 

 

7)格式化文件系統

 

bin/hdfs namenode -format  

 

注意:這裏的格式化文件系統並非硬盤格式化,只是針對主服務器hdfs-site.xmldfs.namenode.name.dirdfs.datanode.data.dir目錄作相應的清理工做。

 

 

 

7)啓動和中止服務

 

sbin/start-all.sh

 

sbin/stop-all.sh  

 

jps 查看進程

 

 hadoop dfsadmin –report 查看hadoop狀態

 

 也能夠進入 下面的namenod 和slave 查看進程起來了沒有

 

 

 

6.  安裝zookeeper

 

6.1.在namenode機器下,配置zookeeper,先解壓安裝包,使用命令:

 

  1. tar -zxvf zookeeper-3.4.4.tar.gz      

 

6.2.進入zookeeper的配置目錄,首先把zoo_sample.cfg重命名一下,能夠從新複製一遍,使用命令:

 

  1. cp zoo_sample.cfg zoo.cfg      

 

6.3. gedit    zoo.cfg ,添加以下內容:

 

  1.                dataDir=/home/cloud/project/tmp/zookeeper/data  
  2. server.1 = datanode1:7000:7001  
  3. server.2 =datanode2:7000:7001  
  4. server.3 =datanode3:7000:7001  

 

6.4.把zookeeper分別遠程拷貝datanode1,datanode2,datenode3,使用以下命令:

 

  1. scp –r zookeeper-3.4.4  datanode1:/home/cloud/project  
  2. scp –r zookeeper-3.4.4  datanode2:/home/cloud/project  
  3. scp –r zookeeper-3.4.4  datanode3:/home/cloud/project  

 

6.5.分別在剛纔的datanode節點/home/cloud/project/tmp/zookeeper/data目錄下,新建文件myid,而後使用命令

 

  1. vim.tiny  myid  
     

 

   分別在datanode1,datanode2,datanode3的myid中寫入對應的server.n中的n,即分別是1,2,3.

 

6.開啓zookeeper服務,在三臺datanode機器的zookeeper安裝目錄下使用命令:

 

bin/zkServer.sh start  

 

7.  安裝hbase

 

Hbase 須要裝在1個master上 和剩下的datanode上面

 

 

 

7.1 解壓縮hbase的軟件包,使用命令

 

1.   tar -zxvf hbase-0.94.2.tar.gz  
 

 

7.2進入hbase的配置目錄,在hbase-env.sh文件裏面加入java環境變量.即

 

1.   JAVA_HOME=/usr/java/jdk1.7.0_09/   

 

加入變量:

 

1.   export  HBASE_MANAGES_ZK=false  

 

7.3  編輯hbase-site.xml ,添加配置文件:

 

1.   <property>  

 

2.   <name>hbase.rootdir</name>  

 

3.   <value>hdfs://namenode:9000/hbase</value>  

 

4.   </property>  

 

5.   <property>  

 

6.   <name>hbase.cluster.distributed</name>  

 

7.   <value>true</value>  

 

8.   </property>  

 

9.   <property>  

 

10.  <name>hbase.zookeeper.quorum</name>  

 

11.  <value>datanode1,datanode2,datanode3</value>  

 

12.  </property>  

 

13.  <property>  

 

14.  <name>hbase.zookeeper.property.dataDir</name>  

 

15.  <value>/home/cloud/project/tmp/zookeeper/data</value>  

 

16.  </property> 
 

 

7.4. 編輯配置目錄下面的文件regionservers. 命令:

 

1.   vim.tiny    regionservers   

 

加入以下內容:

 

1.   datanode1  

 

2.   datanode2  

 

3.   datandoe3  
 

 

7.5. 把Hbase複製到其餘機器,命令以下:

 

1.   scp -r hbase-0.94.2   datanode1:/home/cloud/project  

 

2.   scp -r hbase-0.94.2   datanode2:/home/cloud/project  

 

3.   scp -r hbase-0.94.2   datanode3:/home/cloud/project  
 

 

7.6. 開啓hbase服務。命令以下:

 

1.   bin/start-hbase.sh     

 

可使用bin/hbaseshell 進入hbase自帶的shell環境,而後使用命令version等,進行查看hbase信息及創建表等操做。

相關文章
相關標籤/搜索