hadoop搭建(完全分散式)
連結:https://pan.baidu.com/s/1F7Ke7RHBjYCz3ISKuGPRTQ
提取碼:y7t2
本教程由centos7加hadoop2.7.5加jdk1.7構成:
一、網路檔案設定 (涉及ifcfg-ens33、hostname、hosts)
克隆三個虛擬機器分別命名為 master slave1 slave2
修改網絡卡配置檔案:gedit /etc/sysconfig/network-scripts/ifcfg-ens33
然後分別修改:
master:
#新增以下內容 為虛擬機器ip配置,可自定義
IPADDR=192.168.11.111
NETMASK=255.255.255.0
GATEWAY=192.168.11.1
#修改為靜態ip
BOOTPROTO=static
#設定網絡卡自動開啟
ONBOOT=yes
#如果沒有MAC地址,則新增
HWADDR=本機mac地址(通過ifconfig檢視)
如此 slave1和slave2這樣操作 分別配置為192.168.11.112 192.168.11.113
修改網路名檔案: gedit /etc/hostname
刪掉原來的內容 分別修改為 master slave1 slave2
修改域名解析檔案: gedit /etc/hosts
#新增
master 192.168.11.111
slave1 192.168.11.112
slave2 192.168.11.113
(三個檔案同時這樣新增)
最後 重啟網絡卡 systemctl restart network
二、配置ssh免密登入
分別在三臺電腦上建立新使用者 hadoop,並修改密碼
useradd hadoop
passwd hadoop
然後配置sudo檔案,讓他們可以使用sudo命令
visudo
#找到root ALL=(ALL) ALL這一行,在下面新增
Hadoop ALL=(ALL) ALL
#順便把這一行的#號去掉。去掉了就不用管了
#%wheel ALL=(ALL) ALL
Centos7預設整合著ssh服務
保證由master主機能夠免密碼登入到slave節點上
# master 生成公鑰(三臺都要配置)
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
複製 master 公鑰到 slave節點
# 複製 master 主機公鑰到 slave節點的 /tmp 目錄
scp ~/.ssh/id_rsa.pub [email protected]:/tmp/authorized_keys
scp ~/.ssh/id_rsa.pub [email protected]:/tmp/authorized_keys
追加 /tmp/authorized_keys 到 ~/.ssh/authorized_keys
cat /tmp/authorized_keys >> ~/.ssh/authorized_keys
注意:
1) .ssh目錄的許可權必須是700
2) .ssh/authorized_keys檔案許可權必須是600
三、配置基礎環境
基礎環境包括java環境和hadoop基礎配置,從百度雲連線上提取jdk和hadoop原始碼,通過tools,共享資料夾,u盤傳輸等方式,拷貝到虛擬機器內。
配置java環境
cd /usr
mkdir lo
cd lo
mkdir java
mkdir hadoop
cd 桌面
sudo tar -zxvf jdk-1.7.tar.gz -C /usr/lo/
sudo tar -zxvf hadoop-2.7.5.tar.gz -C /usr/lo/
cd /usr/lojdk1.7.0_80
pwd #這個是java環境的工作路徑
cd /usr/lo/hadoop-2.7.5
pwd #這個是hadoop的工作路徑
cd /usr
sudo chown hadoop -R lo
#到目前為止,解壓完成,以下開始配置環境
sudo gedit /etc/profile
#修改JAVA_HOME為當前工作路徑
export JAVA_HOME=(pwd時輸出的路徑)
#然後新增
export HADOOP_HOME=(pwd時輸出的路徑)
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 HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
#在PATH裡面加上hadoop的路徑
export PATH=$JAVA_HOME/bin:$HADOOP_HOME/sbin:$HADOOP_HOME/bin:$PATH
#儲存並關閉
重新整理檔案
source /etc/profile
java -version
hadoop
執行這兩條命令時,出現這個,代表配置成功
接下來開始配置hadoop四檔案:這四個檔案都在hadoop安裝目錄下的etc/hadoop
第一個檔案 core-site.xml:
<configuration>
<!--指定namenode的地址-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<!--用來指定使用hadoop時產生檔案的存放目錄-->
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/lo/tmp</value>
</property>
</configuration>
第二個檔案hdfs-site.xml:
<configuration>
<!--指定hdfs儲存資料的副本數量-->
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<!--指定SecondayNameNode的埠號-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>Master:50090</value>
</property>
<!--指定hdfs中namenode的儲存位置-->
<property>
<name>dfs.namenode.name.dir</name>
<value>/usr/lo/tmp/name</value>
</property>
<!--指定hdfs中datanode的儲存位置-->
<property>
<name>dfs.datanode.data.dir</name>
<value>/usr/lo/tmp/data</value>
</property>
</configuration>
第三個檔案mapred-site.xml
<configuration>
<!--告訴hadoop以後MR(Map/Reduce)執行在YARN上-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!--配置MapReduce歷史伺服器-->
<property>
<name>mapreduce.jobhistory.address</name>
<value>Master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>Master:19888</value>
</property>
</configuration>
第四個檔案yarn-site.xml
<configuration>
<!--nomenodeManager獲取資料的方式是shuffle-->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!--指定Yarn的老大(ResourceManager)的地址-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<configuration>
然後修改 hadoop-env.sh
把裡面的JAVA_HOME 修改成profile中的JAVA_HOME路徑。
接著修改 slaves
把 192.168.11.112 192.168.11.113 新增到裡面
然後 把整個配置好的hadoop目錄和java目錄打包,發給其他slave節點機
cd /usr
tar -zcvf lo.tar.gz lo
傳送
(這裡需要提前在兩個子節點建立屬主為hadoop使用者的檔案例如/usr/tmp1)
scp /usr/lo.tar.gz [email protected]:/usr/tmp1
scp /usr/lo.tar.gz [email protected]:/usr/tmp1
持一致格式化檔案系統
hdfs namenode -format
啟動檔案服務
start-dfs.sh
start-yarn.sh
在hadoop—env.sh中 新增export HADOOP_OPTS="-Djava.library.path=${HADOOP_HOME}/lib/native"