搭建Hadoop平臺
1. 安裝Hadoop和JDK
-
首先大家要有Hadoop的Linux版本和JDK1.8,可以在官方網站上下載
-
下載完成後解壓到指定的位置
-
在這裏首先清除之前系統自帶的JDK,這裏我使用的是
sudo yum -y remove java
- 然後就是配置JDK和Hadoop的系統配置
sudo vi /etc/profile
## 詳細的配置如下所示
##JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_144
export PATH=$PATH:$JAVA_HOME/bin
##HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-2.7.2
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
- 然後讓配置文件生效
source /etc/profile
2. 準備三個虛擬機
假設我們之前已經配置好一臺虛擬機,此時我們將它克隆三個
- 克隆好三臺虛擬機後,我們首先要進行網絡配置
vim /etc/udev/rules.d/70-persistent-net.rules
進入後就是個樣子,然後我們把上面的 ‘eth0’那行刪掉,把下面‘eth1’改爲‘eth0’,並且複製記下ATTR{address}列
- 設置IP
vim /etc/sysconfig/network-scripts/ifcfg-eth0
進入後,將剛纔複製的ATTR{address}粘貼到HWADDR,設置對應的IPADDR
DEVICE(接口名,默認eth0)
HWADDR(MAC地址,默認)
TYPE(網絡類型,默認Ethernet)
UUID(隨機id,不用管它)
ONBOOT(系統啓動時網絡接口是否有效;默認是no,改爲yes)
BOOTPROTO(IP的配置方法,後面需要用固定ip連接虛擬機,所以設置爲靜態ip,改爲static),
IPADDR(虛擬機的IP地址,手動添加,注意網段要與win中ip網段一致)
- 設置主機名
vim /etc/sysconfig/network
每臺主機設置不同的主機名
在 vim /etc/hosts 中設置好對應,方便直接用名字連接
- 關閉防火牆
查看防火牆
service iptables status
關閉防火牆
service iptables stop
查看防火牆開機啓動狀態
chkconfig iptables --list
關閉防火牆開機啓動
chkconfig iptables off
- 給予用戶root權限
vim /etc/sudoers 加入一行
hadoop(此爲用戶名hadoop) ALL=(ALL) NOPASSWD:ALL
做完,記得重啓!
到這裏,大家就可以Ping一下了看三臺機子之間通不通
3. 配置集羣
- 集羣部署規劃
hadoop101 | hadoop102 | hadoop103 | |
---|---|---|---|
HDFS | NameNode,DataNode | DataNode | SecondaryNameNode,DataNode |
YARN | NodeManager | ResourceManager,NodeManager | NodeManager |
- 核心文件
配置core-site.xml
[waectr@hadoop101 hadoop]$ vi core-site.xml
在該文件中編寫如下配置
<!-- 指定HDFS中NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop101: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
[atguigu@hadoop102 hadoop]$ vi hadoop-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_144
配置hdfs-site.xml
[atguigu@hadoop102 hadoop]$ vi hdfs-site.xml
在該文件中編寫如下配置
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!-- 指定Hadoop輔助名稱節點主機配置 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop103:50090</value>
</property>
- YARN配置文件
配置yarn-env.sh
[atguigu@hadoop102 hadoop]$ vi yarn-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_144
配置yarn-site.xml
[atguigu@hadoop102 hadoop]$ vi 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>hadoop102</value>
</property>
- MapReduce配置文件
配置mapred-env.sh
[atguigu@hadoop102 hadoop]$ vi mapred-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_144
配置mapred-site.xml
[atguigu@hadoop102 hadoop]$ cp mapred-site.xml.template mapred-site.xml
[atguigu@hadoop102 hadoop]$ vi mapred-site.xml
在該文件中增加如下配置
<!-- 指定MR運行在Yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
- 發送出去
sudo scp -r xxx root@hadoop103:xxx
4. 配置SSH
找到家目錄下的.shh文件夾(這是一個影藏的文件夾)
生成祕鑰的指令時
ssh-keygen -t rsa
然後分發出去
ssh-copy-id hadoop102
爲每個服務器都配置
5. 集羣羣起
啓動集羣前要先格式化集羣,注意格式化之前,一定要先停止上次啓動的所有namenode和datanode進程,然後再刪除data和log數據,用jps查看現在的java進程
bin/hdfs namenode -format
啓動HDFS,啓動的時候在NameNode配置的機器上羣起HDFS
start-dfs.sh / stop-dfs.sh
啓動Yarn,啓動的時候在ResouceManager配置的機器上啓動Yarn
start-yarn.sh / stop-yarn.sh
注:以上羣起的時候都要配置SSH連接
此時集羣啓動完成,要在 http://hadoop101:50070/dfshealth.html#tab-startup-progress 上查看HDFS的信息
HDFS的相關操作
這裏在網上查詢了相關的操作指令做了整理
上傳文件到集羣
- 上傳小文件
hdfs dfs -mkdir -p /user/atguigu/input
hdfs dfs -put wcinput/wc.input /user/atguigu/input
- 上傳大文件
bin/hadoop fs -put /opt/software/hadoop-2.7.2.tar.gz /user/atguigu/input
上傳文件後查看文件存放在什麼位置
查看HDFS在磁盤存儲文件內容
cat blk_1073741825
下載
bin/hadoop fs -get /user/atguigu/input/hadoop-2.7.2.tar.gz ./