Centos7安裝hadoop集羣步驟

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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章