雲伺服器搭建Hadoop叢集
一、搭建說明
1、搭建簡易的hadoop叢集,本次搭建使用三臺騰訊雲伺服器。其中,一臺作為NameNode管理DataNode的分佈資訊和執行狀態;兩臺作為普通的DataNode節點。
2、本次使用Ubuntu16.04.6系統,搭建節點為master、slave1和slave2
二、搭建準備
1、更改使用者名稱或新建使用者,名為hadoop(確保每臺機器上的使用者名稱相同,使ssh免密驗證更容易)。
2、修改主機名和ip-hostname對映關係(修改 /etc/hostname 和 /etc/hosts 兩個檔案)。
a.分別在三臺機器的/etc/hostname檔案修改主機名,分別取名為master,slave1,slave2 。
b.在每臺機器的 /etc/hosts 檔案中中新增Ip和主機名的對映關係。設定本機對映為內網ip,其他伺服器的ip對映為公網ip(注意,每臺機器都需要新增所有的對映)
3、ssh免登陸配置:在每臺伺服器的/home/hadoop/.ssh/ 目錄中,執行如下命令生成一對金鑰,並將本地主機的公鑰新增到遠端主機的authorized_keys檔案上。三臺機器兩兩雙向進行配置,注意包括自己對自已。(例子緊配置了自己)
ssh-keygen -t rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub master4、安裝java
apt-get install openjdk-8-jre5、Hadoop安裝:每臺伺服器Hadoop的安裝目錄必須一致,安裝包的配置資訊也必須一致。在/usr/local/目錄中新建software資料夾並進入,執行以下命令下載Hadoop安裝包,然後解壓到當前目錄
sudo wget http://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-2.8.5/hadoop-2.8.5.tar.gz
sudo tar -zxvf hadoop-2.8.5.tar.gz -C /usr/local/
6、新增環境變數:在每臺伺服器的 /etc/profile 檔案最後新增hadoop,java的路徑。
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/jre export HADOOP_HOME=/usr/local/hadoop-2.8.5 export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$ZOOKEEPER_HOME/binsource /etc/profile //執行後配置生效
編輯~/.bashrc檔案,新增如下內容
export HADOOP_HOME=/usr/local/hadoop-2.8.5 export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin source ~/.bashrc7、測試安裝是否生效
java -version hadoop version
三、配置檔案的修改(配置檔案分別位於root/hadoop-2.8.5/etc/hadoop和root/zookeeper-3.3.3/conf)
1、hadoop-env.sh:將25行左右的那一行替換成如下語句
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/jre
2、core-site.xml
<configuration> <property> <name>hadoop.tmp.dir</name> <value>file:/usr/local/hadoop-2.8.5/tmp</value> <description>Abase for other temporary directories.</description> </property> <property> <name>fs.defaultFS</name> <value>hdfs://master:9000</value> </property> </configuration>
3、hdfs-site.xml
<configuration> <property> <name>dfs.namenode.name.dir</name> <value>file:/usr/local/hadoop-2.8.5/tmp/dfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/usr/local/hadoop-2.8.5/tmp/dfs/data</value> </property> </configuration>
4、mapred-site.xml:修改mapred-site.xml(複製mapred-site.xml.template,再修改檔名)
sudo mv ./mapred-site.xml.template ./mapred-site.xml <configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>
5、yarn-site.xml
<configuration> <!-- Site specific YARN configuration properties --> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.resourcemanager.hostname</name> <value>master</value> </property> </configuration>
6、slaves:在每臺伺服器的slaves檔案中配置叢集Datanode的主機名,只有這個檔案裡面的主機名才能被Namenode識別。
slave1 slave2
四、啟動Hadoop叢集
1、在master主機上執行如下命令:
cd /usr/local/hadoop-2.8.5 bin/hdfs namenode -format sbin/start-all.sh
2、用jps檢視程序
五、測試
檢視namenode狀態,目前master上的namenode處於active的狀態。
root@hadoop1:~# hdfs haadmin -getServiceState master active
執行一下hadoop提供的demo中的WordCount程式:
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.4.1.jar wordcount input out
六、出現問題
1、Host key verification failed.