CentOS 6.5安裝hadoop1.2.1經驗(由偽分布式到完全分布式)

來源:互聯網
上載者:User

標籤:

轉寄請註明本文連結

準備工作:

VMware-workstation  (網路統一設定為橋接)

Xshell或者putty        (方便在Windows下進行操作,複製粘貼命令方便,更推薦用第一個,以後不需要輸入IP地址和帳號密碼了)

FileZilla                      (傳輸檔案,連接埠22,使用SFTP協議)                     

 

 

環境為

Centos6.5 X86 minimal

Hadoop1.2.1

jdk-8u73-linux-i586

先配置偽分布式,把偽分布式跑起來再升級為完全分布模式

註:192.168.67.57 是Master節點主機。

以下操作在root使用者下進行

一、在linux系統建立目錄

mkdir /opt

把hadoop-1.2.1-bin.tar 、jdk-8u73-linux-i586.rpm上傳到/opt目錄下

在/opt目錄下安裝hadoop會減少不必要麻煩

 

二、設定靜態ip

vi /etc/sysconfig/network-scripts/ifcfg-eth0

 

 

三、關閉防火牆

vi /etc/selinux/config      設定  SELINUX=disabled

此外,輸入以下命令

service iptables status     --查看防火牆狀態

service iptables stop       --關閉防火牆

service ip6tables stop      --關閉防火牆

chkconfig ip6tables off     --設定防火牆開機自關閉

chkconfig iptables off      --設定防火牆開機自關閉

chkconfig iptables --list   --查看防火牆服務狀態列表

chkconfig ip6tables --list   --查看防火牆服務狀態列表

#iptables 和 ip6tables一樣,都是linux防火牆軟體,不同的是ip6tables採用的TCP/ip協議為IP6.

 

四、修改hosts,該主機設定為Master

vi /etc/hosts   添加

192.168.67.57   Master

 

vi /etc/sysconfig/network

NETWORKING=yes

HOSTNAME=Master

 

五、 增加使用者組,使用者

groupadd hadoop

useradd –g hadoop hadoop

passwd hadoop

 

六、安裝java,並且配置java環境

我使用的是rpm安裝包,簡化安裝

rpm -ivh jdk-8u73-linux-i586.rpm

安裝目錄為 /usr/java/jdk1.8.0_73

將該安裝目錄複寫出來,方便後面配置環境

vi /etc/profile

在最下面加入

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

export JRE_HOME=/usr/java/jdk1.8.0_73/jre

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

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

儲存退出,執行以下命令使配置生效!

[[email protected] ~]#chmod  +x  /etc/profile ;增加執行許可權

[[email protected] ~]#source  /etc/profile;使配置生效!

 

以上操作都在root使用者下完成。

 

七、設定SSH免密碼登陸,切換到hadoop使用者

先檢查一下是否有ssh和rsync工具

rpm -qa |grep ssh

 

 rpm -qa |grep rsync(可有可無,有更好)

 沒有ssh和rsync工具的話使用下面命令進行安裝:

yum install ssh     #安裝SSH

yum install rsync  #(rsync是一個遠端資料同步工具,可通過LAN/WAN快速同步多台主機間的檔案)

service sshd restart   #啟動SSH服務

 

ssh-keygen -t rsa              # 會有提示,都按斷行符號就可以

cat id_rsa.pub >> authorized_keys  # 加入授權

chmod 600 ./authorized_keys    # 修改檔案許可權,否則無法免密碼登陸

chmod 700 ~/.ssh                     #修改目錄許可權

 

八、安裝hadoop

cd /opt    #進入opt目錄

tar -zxf /opt/hadoop-1.2.1-bin.tar.gz -C /opt         #解壓

mv hadoop-1.2.1 hadoop                                      #重新命名

chown -R hadoop:hadoop hadoop                       #更改所屬使用者,十分重要

 

九、嘗試單機模式

hadoop預設的模式就是非分布式模式,只需配置java環境,無需hadoop配置就可以運行

cd /opt/hadoop

mkdir ./input

cp ./etc/hadoop/*.xml ./input   # 將設定檔作為輸入檔案

./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep ./input ./output ‘dfs[a-z.]+‘

cat ./output/* 

 

hadoop不能覆蓋結果檔案,所以先刪除   ./output ,下次運行上面的例子就不會報錯。

rm -r ./output

 

十、配置hadoop

(1)vi /etc/profile

添加下面內容

# Hadoop Environment Variables

export HADOOP_HOME=/opt/hadoop

export HADOOP_INSTALL=$HADOOP_HOME

export HADOOP_MAPRED_HOME=$HADOOP_HOME

export HADOOP_COMMON_HOME=$HADOOP_HOME

export HADOOP_HDFS_HOME=$HADOOP_HOME

export YARN_HOME=$HADOOP_HOME

export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin

————————————————————————————————

下面進入hadoop的設定檔夾

 

 cd /opt/hadoop/conf/

(2)配置 hadoop-env.sh

vi hadoop-env.sh  在最下面添加

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

export HADOOP_HOME_WARN_SUPPRESS=1    #我的環境在格式化namenode時出現過Warning: $HADOOP_HOME is deprecated.,這句根據情況

 

(3)配置  core-site.xml

vi core-site.xml

 

<configuration>

    <property>

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

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

        <description>Abase for other temporary directories.</description>

    </property>

    <property>

        <name>fs.default.name</name>

        <value>hdfs://192.168.67.57:9000</value>

    </property>

</configuration>

 

(4)配置hdfs-site.xml

vi hdfs-site.xml 

 

 <configuration>

    <property>

        <name>dfs.replication</name>

        <value>1</value>

    </property>

</configuration>

 

(5)配置mapred-site.xml

vi mapred-site.xml

 

 <configuration>

    <property>

        <name>mapred.job.tracker</name>

        <value>http://192.168.67.57:9001</value>

    </property>

</configuration>

 

(6)配置masters 和 slaves檔案(這部可以省略)

全部清空,再添加Master的ip地址

 

(7)格式化

cd /opt/hadoop

hadoop namenode -format

start-all.sh

 

(8)查看運行狀態

jps

 

 這樣就啟動成功了

 

十一、執行樣本程式

hadoop基本操作命令

(1)列出檔案(hdfs是系統中的系統)

hadoop fs -ls /

 


(2)關閉hadoop

stop-all.sh

 

(3)建立檔案夾

hadoop fs -mkdir /newfile

 

 

(4)添加檔案到hdfs

 

是在FileZilla查看檔案,我已經在file1.txt和file2.txt輸入了兩句英文句子。

 注意,file檔案夾和裡面的檔案都要是hadoop使用者組,否則會失敗

hadoop fs -put /opt/hadoop/file/* /newfile

 

 

(5)執行樣本程式wordcount

先看下程式包在哪裡

ll /opt/hadoop | grep jar

 

 

hadoop jar /opt/hadoop/hadoop-examples-1.2.1.jar wordcount /newfile /output/file

/newfile    為輸入檔案

/output/file  為輸出檔案

 

 

(6)查看執行結果

hadoop fs -cat /output/file/part-r-00000

 

 

(7)其他常用命令

 下載檔案

hadoop fs -get /output/file/part-r-00000 /home/hadoop/

 

 

(8)刪除檔案

hadoop fs -rmr /output/file

 

 

問題總結

在使用這個

環境為

Centos6.5 X86 minimal

Hadoop1.2.1

jdk-8u73-linux-i586

配置之前,我使用的配置是

Centos6.5 X64 minimal

hadoop2.6.0

jdk-8u101-linux-x64

但是遇到了

 

 “WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable”

 

 雖然NameNode,DataNode等都啟動了,但是在hdfs下建立檔案夾失敗

hadoop fs –mkdir input

無法對hdfs進行任何操作

 


 後來換成

Centos6.5 X86 minimal

hadoop2.6.0

jdk-8u101-linux-x64

 

 http://f.dataguru.cn/thread-542396-1-1.html

 

 

 再後來,把hadoop降級

Centos6.5 X86 minimal

Hadoop1.2.1

jdk-8u73-linux-i586

 

啟動時候遇到Warning: $HADOOP_HOME is deprecated.,加入一條命令搞掂,前面有提到。

 

————————————————————————————————————————————

下面介紹如何將其升級為完全分布式

一、

在剛才成功運行偽分布式的情況下,關機,複製出另外的三台虛擬機器。centos6.5靜態ip複製出來的話是不能上網的,設定參考!!!

修改好每個虛擬機器的ip,設定為靜態ip,接著修改hostname,修改hosts,至於/etc/profile則不用再配置了。

需要修改的有:

vi /etc/sysconfig/network-scripts/ifcfg-eth0

vi /etc/sysconfig/network

vi /etc/hosts

 

二、ssh配置

因為複製出來的,每台虛擬機器的ssh檔案都一致

只需要在hadoop使用者下,Master與Slave都互相ssh一下,就可以了。

 

三、配置hadoop

需要修改的只有masters 和 slaves

(1)在Master節點下

vi /opt/hadoop/conf/masters

 

 192.168.67.57是我Master的ip地址

(2)在Master節點下

vi /opt/hadoop/conf/slaves

 
 為什麼是四個ip呢,因為我後來在叢集運行時動態地加入了一個Slave。有多少個Slave就寫多少個IP就行了。

(3)把slaves,masters檔案發送到其他三個slaves上

scp /opt/hadoop/conf/slaves 192.168.67.58:/opt/hadoop/conf/

scp /opt/hadoop/conf/masters 192.168.67.58:/opt/hadoop/conf/

(4) 格式化

執行格式化之前,把/opt/hadoop/tmp下面的東西刪掉

並且把/opt/hadoop/logs  裡面的日誌清空

 

四、動態添加slave節點

建議直接複製虛擬機器,參考偽分布式編程完全分布式時候的設定進行修改設定檔。

第一步,修改虛擬機器的基本資料。

需要修改的有:

vi /etc/sysconfig/network-scripts/ifcfg-eth0

vi /etc/sysconfig/network

vi /etc/hosts

 

第二步,SSH,參照上文

 

第三步,修改Master主機上 /opt/hadoop/conf/下的masters檔案和slaves檔案,並發送到所有的Slaves節點

 

第四步,因為其他節點正在運行,並不需要再次進行格式化hdfs

只需要在新的slave節點上,啟動datanode和tasktracker進程

hadoop-daemon.sh start datanode

hadoop-daemon.sh  start tasktracker

 

通過jps可以查看到運行情況,也可以通過網頁端查看新添加的節點

 

第四步,如果有必要,進行負載平衡

在master節點上運行start-balancer.sh進行資料負載平衡

start-balancer.sh 

 

CentOS 6.5安裝hadoop1.2.1經驗(由偽分布式到完全分布式)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.