環境是VirtualBox虛擬機和Ubuntu操作系統,虛擬機和操作系統的安裝見https://blog.csdn.net/zhangcjsyl/article/details/88142588
一、安裝JDK
Hadoop是以java開發,因此需要安裝Java環境。首先查看java版本
$ java -version
請注意,推薦安裝jdk8或以下的jdk版本,jdk1.9以上的javax包被禁用,按本文的安裝配置方法會無法啓動ResourceManager;如要使用jdk9以上的版本需要增加配置(見https://issues.apache.org/jira/browse/HADOOP-14978,hadoop推薦的jdk版本見https://wiki.apache.org/hadoop/HadoopJavaVersions),如果已經安裝了jdk1.8及以下的java環境可以直接進行下一節設置SHH無密碼登錄。如果沒有安裝Java環境或者jdk版本在9以上就要進行下面的步驟進行安裝:
下載apt軟件安裝包管理工具
$ sudo apt-get update
這一操作需要輸入superuser的密碼,然後安裝software-properties
$sudo apt-get install software-properties-common
添加ppa:
$ sudo add-apt-repository ppa:webupd8team/java
更新系統:
$ sudo apt-get update
完畢後使用apt-get安裝jdk,這裏安裝的事oracle的1.8版本jdk:
$ sudo apt-get install oracle-java8-installer
系統會詢問是否繼續執行,輸入Y後按Enter即可。如果之前安裝過jdk需要進行jdk版本切換:
$ sudo update-java-alternatives -s java-8-oracle
再次查看java版本,當看到如下的內容則已經安裝成功。
二、設置SSH無密碼登錄
Hadoop一般是集羣部署,啓動Hadoop時NameNode必須與DataNode連接,爲了讓系統能夠順利運行而不用輸入密碼就需要設置SSH無密碼登錄。
1.安裝SSH
$ sudo apt-get install ssh
在終端執行以上命令,系統會詢問是否繼續,輸入Y並按下Enter鍵。
2.安裝rsync
終端輸入下面的命令
$ sudo apt-get install rsync
3.產生SSH Key
這裏採用rsa算法,也可採用dsa算法,就將rsa改爲dsa即可:
$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_dsa
SSH Key會產生在用戶根目錄/home/zhangc(這裏zhangc是我的用戶名)下,輸入下面的命令查看產生的SSH Key:
$ ll /home/zhangc/.ssh
運行後得到下面的結果:
.pub文件就是產生的Key,下面將這個Key放到許可證文件中去:
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
(>> 會將命令產生的輸出附加在後面的文件末尾而不會覆蓋該文件。)、
可以嘗試進行本機的ssh無密碼登錄:
$ ssh localhost
成功後輸入logout命令進行登出,不然的話有些命令無法使用(後面的gedit就是)
$ ssh logout
三、下載安裝Hadoop
訪問下載地址https://archive.apache.org/dist/hadoop/common/(這裏可以使用北京信息學院鏡像http://mirror.bit.edu.cn/apache/hadoop/common/)
選擇要下載的版本,這裏我選擇的事hadoop-3.2.0的版本,點擊進去複製選擇.tar.gz的文件右鍵複製下載鏈接
然後在終端下輸入wget和之前複製的鏈接
$ wget https://archive.apache.org/dist/hadoop/common/hadoop-3.2.0/hadoop-3.2.0.tar.gz
下載完成後解壓縮下載的文件
$ sudo tar -zxvf hadoop-3.2.0.tar.gz
移動到/usr/local目錄下
$ sudo mv hadoop-3.2.0 /usr/local/hadoop
四、設置Hadoop環境變量
1.編輯~/.bashrc
在終端輸入下面的命令,打開~/.bashrc文件
$ sudo gedit ~/.bashrc
在文件末尾輸入下面的配置:
export JAVA_HOME=usr/lib/jvm/java-8-oracle
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
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 HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native:$JAVA_LIBRARY_PATH
如下圖所示,然後點擊保存,最後點擊關閉按鈕。
2.讓~/.bashrc生效
$ source ~/.bashrc
五、修改Hadoop配置文件
1.修改hadoop-env.sh
$ sudo gedit /usr/local/hadoop/etc/hadoop/hadoop-env.sh
找到如下位置
修改爲自己的jdk路徑:
2.修改core.site.xml
終端輸入以下命令:
$ sudo gedit /usr/local/hadoop/etc/hadoop/core-site.xml
在configuration標籤中增加如下內容:
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
如下圖所示:
然後點擊保存並退出。
3.修改yarn-site.xml
在終端輸入命令:
$ sudo gedit /usr/local/hadoop/etc/hadoop/yarn-site.xml
在configuration標籤中增加如下內容:
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
如下圖所示:
然後點擊保存並退出。
4.設置hdfs-site.xml
在終端輸入命令:
sudo gedit /usr/local/hadoop/etc/hadoop/hdfs-site.xml
在configuration標籤中增加如下內容:
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/hadoop_data/hdfs/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/hadoop_data/hdfs/datanode</value>
</property>
如下圖所示:
然後點擊保存並退出。
創建namenode和datanode目錄:
$ sudo mkdir -p /usr/local/hadoop/hadoop_data/hdfs/namenode
$ sudo mkdir -p /usr/local/hadoop/hadoop_data/hdfs/datanode
六、格式化Hadoop
1.將Hadoop目錄擁有者改爲當前用戶zhangc
$ sudo chown zhangc:zhangc -R /usr/local/hadoop
2.進行格式化
這個操作會清除hdfs中的所有數據:
hadoop namenode -format
七、啓動Hadoop
運行下面的命令啓動hdfs:
$ start-dfs
啓動yarn:
$ start-yarn.sh
以上兩個命令可以用一個命令代替:
$ start-all.sh
使用jps查看當前已啓動的進程:
$ jps
如下所示:
一定要有 DataNode、NodeManager、SecondaryNameNode、ResourceManager、NameNode這五個缺一不可纔算啓動成功。
訪問Resource Manager界面localhost:8088和HDFS界面localhost:9870(hadoop2.x版本的默認的hdfs的端口是50070)
這樣就啓動成功了。