文章目錄
搭建簡單的Hadoop完全分佈式模式
分析
- 最少準備多臺客戶機(Zookeeper至少需要三臺)
- 安裝jdk
- 安裝Hadoop
- 配置環境變量
- 單點啓動
- 配置ssh
- 羣起並測試集羣
首先設置集羣規劃
hadoop100 | hadoop101 | hadoop102 | |
---|---|---|---|
HDFS | NameNode,DataNode | DataNode | SecondaryNameNode,DataNode |
YARN | NodeManager | Resourcemanager,Nodemanager | Nodemanager |
虛擬機準備
注 : 我用的centos7,系統通過關閉firewalld,但是主機還是不能訪問虛擬機的端口,端口還是默認關閉的,需要注意下
注: centos7 系統,如果你的系統在某一天hostname,變成了初始化,然後發現配置文件,沒有變化,使用命令形式 hostname set-hostname name 來重新設定
設置靜態ip與主機名,設置用戶爲超級用戶
注:如果使用Vmare,克隆,注意分配給虛擬機的網卡地址是一樣的,自己需要重新生成
-
/etc/sysconfig/network-scripts/ifcfg-ens32 設置靜態ip
-
vim /etc/sysconfig/network(改變主機名),NETWORKING=yes,HOSTNAME=hadoop10*
-
vim /etc/hosts (設置對應IP地址的主機名)
-
達到要求:
- 各個主機,能夠ping通
- 主機與各個虛擬機,能夠ping通
-
如果圖方便,可以在主機的hosts ,裏面可以寫入例:
192.168.11.100 hadoop100 -
新建用戶
- useradd lan
- vim /etc/sudoers 在root下面,添加一樣格式的lan
配置java環境
- 解壓java在一個文件夾下(我的是/opt/module)
- 配置環境
vim /etc/profile ##JAVA_HOME export JAVA_HOME=/opt/module/jdk1.8.0_144 export PATH=$PATH:$JAVA_HOME/bin source /etc/profile 更新文件配置
hadoop
安裝
- 解壓在一個文件夾下
- 配置環境
## HADOOP_HOME export HADOOP_HOME=/opt/module/hadoop-2.7.2 export PATH=$PATH:$HADOOP_HOME/bin export PATH=$PATH:$HADOOP_HOME/sbin 記得source 下
- 目錄說明
- bin目錄:存放對Hadoop相關服務(HDFS,YARN)進行操作的腳本
- etc目錄:Hadoop的配置文件目錄,存放Hadoop的配置文件
- lib目錄:存放Hadoop的本地庫(對數據進行壓縮解壓縮功能)
- sbin目錄:存放啓動或停止Hadoop相關服務的腳本
- share目錄:存放Hadoop的依賴jar包、文檔、和官方案例
配置集羣
配置core-site.xml
hadoop100 配置
<!-- 指定HDFS中NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop100:9000</value>
</property>
<!-- 指定Hadoop運行時產生文件的存儲目錄 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-2.7.2/data/tmp</value>
</property>
HDFS 配置文件
- hadoop-env.sh 配置
hadoop100 配置 vi hadoop-env.sh export JAVA_HOME=/opt/module/jdk1.8.0_144
- hdfs-site.xml
<property> <name>dfs.replication</name> <value>3</value> </property> <!-- 指定Hadoop輔助名稱節點主機配置 --> <property> <name>dfs.namenode.secondary.http-address</name> <value>hadoop102:50090</value> </property>
YARN 配置文件
- yarn-env.sh
vi yarn-env.sh export JAVA_HOME=/opt/module/jdk1.8.0_144
- yarn-site.xml
<!-- Reducer獲取數據的方式 --> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <!-- 指定YARN的ResourceManager的地址 --> <property> <name>yarn.resourcemanager.hostname</name> <value>hadoop101</value> </property>
MapReduce 配置文件
- mapre-env.sh
vi mapred-env.sh export JAVA_HOME=/opt/module/jdk1.8.0_144
- mapre-site.xml
cp mapred-site.xml.template mapred-site.xml vi mapred-site.xml 添加配置 <!-- 指定MR運行在Yarn上 --> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property>
這是一臺主機的配置,其他另外兩臺要一摸一樣
配置羣起集羣
1. 配置slaves
/opt/module/hadoop-2.7.2/etc/hadoop/slaves
vi slaves
hadoop102
hadoop103
hadoop104
注意:該文件中添加的內容結尾不允許有空格,文件中不允許有空行。
然後同步所有結點配置文件
2. 啓動集羣
-
如果集羣第一次啓動,需要格式化namenode
bin/hdfs namenode -format -
啓動HDFS ;
sbin/start-dfs.sh -
啓動yarn
sbin/start-yarn.sh
注意::namenode和resourcemanger如果不是同一臺機器,不能在namenode上啓動yarn,應該在Resourcemanager所在的機器上啓動yarn
測試是否啓動成功
- web查看 ,例子URL
- http://hadoop100:50070/
- hadoop102:50090
集羣啓動/停止方式
組件分別啓動停止
-
分別啓動-停止HDFS組件
hadoop-daemon.sh start/stop namenode/datanode/secondarynamnode
-
啓動停止YARN
yarn-daemon.sh start/stop resourcemanager/nodemnaager
整體啓動
各個模塊分開啓動停止(ssh配置是前提)
-
整體啓動停止HDFS
start-dfs。sh/ stop-dfs.sh
-
整體啓動停止yarn
start-yarn.sh / stop-yarn.sh
需要注意
== 集羣需要時間同步服務器==
因爲Zookeeper 如果時間 相差太大的話,會啓動失敗
如果出現一些問題,參考博客
參考:http://www.cnblogs.com/zlslch/p/6604189.html