hadoop集羣安裝步驟
!ssh遠程執行命令時的一個小知識點
ssh 遠程登錄可以爲所欲爲,但是ssh遠程執行的時候默認不會加載/etc下的文件如
ssh [email protected]
echo $JAVA_HOME
是打印不出來的,應該換寫成下面的形式
ssh [email protected]
source /etc/profile ; echo $JAVA_HOME
準備虛擬機環境
#如果沒有vim可選擇安裝vim
yum -y install vim
#關閉防火牆
service iptables stop
#開啓自動關閉防火牆
chkconfig iptables off
#centos7關閉防火牆
systemctl stop firewalld.service
systemctl disable firewalld.service
systemctl status firewalld.service
#配置Selinux爲disabled
vim /etc/selinux/config
SELINUX=disabled
#安裝ntp服務
yum -y install ntp
#配置ntp服務
vim /etc/ntp.conf
server ntp1.aliyun.com
#開啓ntp服務[準不準不重要,集羣時間一致就行]
service ntpd start
systemctl start ntpd.service
#開機自動啓動ntpd服務
chkconfig ntpd on
systemctl enable ntpd.service
修改hosts文件[按需填寫]
vim /etc/hosts
10.0.92.101 work1
10.0.92.102 work2
10.0.92.103 work3
10.0.92.104 work4
vim /etc/hosts
192.168.0.114 home1
192.168.0.115 home2
192.168.0.116 home3
192.168.0.117 home4
創建目錄
mkdir -p /opt/zip
mkdir -p /opt/soft
mkdir -p /opt/data/tmp
cd /opt/zip
上傳jdk hadoop 到/opt/zip中
安裝
tar -xzvf jdk-1.8.tar.gz -C /opt/soft
tar -xzvf hadoop-2.7.7.tar.gz -C /opt/soft/
cd /opt/soft/
mv jdk1.8.0_201 jdk1.8
mv hadoop-2.7.7 hadoop2.7
配置 vim /etc/profile 追加
export JAVA_HOME="/opt/soft/jdk1.8"
export HADOOP_HOME="/opt/soft/hadoop2.7"
export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
生效
source /etc/profile
#或者 . /etc/profile
echo $JAVA_HOME
echo $HADOOP_HOME
配置hadoop
爲了方便最好把這幾個都配置一下
配置 Hadoop JDK 路徑修改 hadoop-env.sh、mapred-env.sh、yarn-env.sh 文件中的 JDK 路徑
vim hadoop-env.sh
vim mapred-env.sh
vim yarn-env.sh
#export JAVA_HOME=${JAVA_HOME}
export JAVA_HOME="/opt/soft/jdk1.8"
爲啥一定要改這個呢??還記得文章開頭寫的嗎。ssh遠程執行時這裏面的${JAVA_HOME}是獲取不好的,會出問題,所以換成絕對路徑。
etc/hadoop/core-site.xml:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/soft/hadoop2.7/data/tmp</value>
</property>
</configuration>
比hadoop官網多配置了一個hadoop.tmp.dir原因是
默認的
hadoop.tmp.dir
是/tmp/hadoop-${user.name}
,此時有個問題就是 NameNode 會將 HDFS 的元數據存儲在這個/tmp目錄下,如果操作系統重啓了,系統會清空 /tmp 目錄下的東西,導致NameNode元數據丟失,是個非常嚴重的問題,所有我們應該修改這個路徑。
etc/hadoop/hdfs-site.xml:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
配置免密
ssh localhost 檢測一下是否已經配置過,同時會自動生成一個.ssh的文件夾,進入到.ssh文件夾中,準備生成密鑰
說明:把自己的公鑰給誰,自己就可以登錄誰了。
生成公鑰和私鑰
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
#或者 ssh-keygen -t rsa + 3個回車
發送公鑰給自己或者其他服務器
方式一 通過ssh-copy-id的方式【推薦】
ssh-copy-id -i ~/.ssh/id_rsa.pub <IP地址或者域名localhost>
#栗子
ssh-copy-id -i ~/.ssh/id_rsa.pub localhost
ssh-copy-id -i ~/.ssh/id_rsa.pub work1
ssh-copy-id -i ~/.ssh/id_rsa.pub work2
ssh-copy-id -i ~/.ssh/id_rsa.pub work3
ssh-copy-id -i ~/.ssh/id_rsa.pub work4
如上配置完 work1就能登錄 work2,work3,work4
方式二 通過scp將內容寫到對方的文件中
scp -p ~/.ssh/id_rsa.pub root@<remote_ip>:/root/.ssh/temp.pub
#然後再登錄另一個服務器 [把名字改偉temp.pub的原因是防止和另一臺上的id_rsa.pub衝突]
cat ~/.ssh/temp.pub >> ~/.ssh/authorized_keys
rm -f ~/.ssh/temp.pub
方式三 手工複製粘貼的方式
把id_rsa.pub追加到其他服務器的~/.ssh/authorized_keys裏面
格式化於啓動
#格式化
hdfs namenode -format
#啓動
sbin/start-dfs.sh
#檢查
jps
#打開網頁訪問
http://work1:50070
#創建目錄
hdfs dfs -mkdir -p /user/root/test
#上傳文件
hdfs dfs -put ngindx.tar.gz /user/root/test
#下載文件
hdfs dfs -get /user/root/test/nginx.tar.gz
配置yarn
cd ${HADOOP_HOME}/etc/hadoop/
cp mapred-site.xml.template mapred-site.xml
vim mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
vim yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>work1</value>
</property>
</configuration>
啓動yarn資源管理器,和nodeManager
yarn-daemon.sh start resourcemanager
yarn-daemon.sh start nodemanager
計算一個wordcount
echo "hadoop mapreduce hivehbase spark stormsqoop hadoop hivespark hadoop" >wc.input
hdfs dfs -mkdir /demo
hdfs dfs -put wc.input /demo
hdfs dfs -cat /demo/wc.input
cd /opt/soft/hadoop2.7/share/hadoop/mapreduce
yarn jar hadoop-mapreduce-examples-2.7.7.jar wordcount /demo /out
#計算完成後查看結果
hdfs dfs -cat /out/part-r-00000
cd /opt/soft/hadoop2.7.7/sbin
#停止運行
stop-dfs.sh
總結安裝好後,啓動並運行一個wordcount
start-dfs.sh
yarn-daemon.sh start resourcemanager
yarn-daemon.sh start nodemanager
hdfs dfs -ls /
echo "hadoop mapreduce hivehbase spark stormsqoop hadoop hivespark hadoop" >wc.input
hdfs dfs -mkdir /test
hdfs dfs -put wc.input /test
cd /opt/soft/hadoop2.7/share/hadoop/mapreduce/
yarn jar hadoop-mapreduce-examples-2.7.7.jar wordcount /test /out