前期准備:創建一個新用戶hadoop
$ sudo useradd -m hadoop -s /bin/bash
設置密碼
$ sudo passwd hadoop #也可以設置你喜歡的
需輸入兩次密碼
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
提升hadoop用戶的權限,編輯:
$ vi /etc/sudoers
按 :92 enter(轉到92行),在root ALL=(ALL) ALL下,添加
hadoop ALL=(ALL) ALL
保存,退出,切換至hadoop用戶
su hadoop
配置SSH免密登錄
$ ssh-keygen -t rsa
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ chmod 755 ~/.ssh
$ chmod 0600 ~/.ssh/authorized_keys
驗證ssh
$ ssh localhost
JDK安裝
先查看是否安裝,如果安裝了,先卸載當前版本
下載JDK
1、方法一:在線下載
$ cd /opt/software #software是我自己建的一個存放安裝包的文件夾
$ wget https://download.oracle.com/otn/java/jdk/8u211-b12/478a62b7d4e34b78b671c754eaaf38ab/jdk-8u211-linux-x64.tar.gz?AuthParam=1558191965_2d075bd3a41704e8e152ef0cfd98ba3e
$ sudo tar -zxvf jdk-8u211-linux-x64.tar.gz -C /usr/local/ #解壓到/usr/local/ 這個路徑下
2、方法二:在本機上下載,然后直接用工具拖進去,解壓方法相同
添加環境變量
$ vi /etc/profile.d/en.sh
切換至編輯模式,輸入以下內容:
export JAVA_HOME=/usr/local/jdk #這是我重命名之后的,原來是jdk1.8.0_211
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
source
配置文件生效
$ source /etc/profile.d/en.sh
輸出JAVA_HOME
路徑,查看配置是否生效
$ echo $JAVA_HOME
輸出以下內容說明配置已經生效
/usr/local/jdk1.8.0_211
查看是否java安裝成功
$ java -version
顯示以下信息說明安裝成功
openjdk version "1.8.0_212"
OpenJDK Runtime Environment (build 1.8.0_212-8u212-b03-0ubuntu1.18.04.1-b03)
OpenJDK 64-Bit Server VM (build 25.212-b03, mixed mode)
安裝Hadoop
與JDK相同,可以在線下載,也可以直接拖過去
解壓
$ sudo tar -zxvf hadoop-2.7.1.tar.gz -C /usr/local/ #解壓到/usr
$ mv hadoop-2.7.1 hadoop # 重命名
$ cd /usr/local/hadoop
$ ./bin/hadoop version
#你將會看到類似內容:
Hadoop 2.7.1
Source code repository ………………………………(省略)
添加環境變量
$ vi /etc/profile.d/en.sh
#輸入以下內容:
export HADOOP_HOME=/usr/local/hadoop
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
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
export HADOOP_INSTALL=$HADOOP_HOME
$ source /etc/profile.d/en.sh
配置core-site.xml:
$ sudo vi /usr/local/hadoop/etc/hadoop/core-site.xml
#輸入以下內容:
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/tmp</value>
<description>Abase for other temporary directories.
</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
$ source /etc/profile.d/en.sh
配置hadoop-env.sh
$ sudo vi /usr/local/hadoop/etc/hadoop/hadoop-env.sh
在里面添加,如果原來有,就注釋或刪掉
export JAVA_HOME=/usr/local/jdk
配置hdfs-site.xml:hdfs-site.xml文件中包含,如:復制數據的值,NameNode的路徑,本地文件系統,要存儲Hadoop基礎架構的Datanode路徑的信息
$ sudo vi /usr/local/hadoop/etc/hadoop/hdfs-site.xml
#寫下以下 <configuration> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:/usr/local/hadoop/tmp/dfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/usr/local/hadoop/tmp/dfs/data</value> </property> </configuration>
配置完成后,執行NameNode的格式化
$ /usr/local/hadoop/bin/hdfs namenode -format
#出現類似輸出,說明名稱節點設置成功
19/05/19 11:13:33 INFO common.Storage: Storage directory /opt/module/hadoop-2.7.2/tmp/dfs/name has been successfully formatted.
19/05/19 11:13:33 INFO namenode.NNStorageRetentionManager: Going to retain 1 images with txid >= 0
19/05/19 11:13:33 INFO util.ExitUtil: Exiting with status 0
19/05/19 11:13:33 INFO namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at hadoop137/192.168.137.110
************************************************************/
#如果失敗with status 后面為1
#可以先切換到root下,把/usr/local/hadoop/tmp下的tmp文件刪除,再執行格式化
配置yarn-site.xml
換到hadoop用戶下
$ sudo vi /usr/local/hadoop/etc/hadoop/yarn-site.xml
#寫下 <configuration> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> </configuration>
配置mapred-site.xml
(此文件用於指定MapReduce框架以使用。默認情況下Hadoop包含yarn-site.xml模板。首先,它需要從mapred-site.xml復制模板到mapred-site.xml文件。)
sudo vi /usr/local/hadoop/etc/hadoop/mapred-site.xml
#復制過后,再添加
<configuration> <!--模板中有!復制時不包含configuration標簽--> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>
啟動:/usr/local/hadoop/sbin/start-dfs.sh,出現類似輸出,說明安裝成功:
Starting namenodes on [localhost]
localhost: namenode is running as process 16525. Stop it first.
Starting datanodes
………………………………
通過jps查看是否啟動成功
如果啟動不成功,出現權限問題
運行以下命令,把hadoop目錄所有用戶改到hadoop上
sudo chown -R hadoop:root /usr/local/hadoop
再次運行
測試:
1、虛擬機內部測試:
(1)curl http://localhost:50070
(2)curl http://172.0.0.1:50070
(3)curl http://192.168.137.136:50070
如果發現無法訪問,手動修改hdfs-site.xml, 修改hdfs-site.xml,添加如下,測試時把端口號換成9870
<property> <name>dfs.http.address</name> <value>0.0.0.0:9870</value> </property>
2、本地測試:
http://192.168.137.136:50070
http://192.168.137.136:8088/