Linux centos7 安裝Hadoop單結點
Hadoop實現了一個分散式檔案系統(Hadoop Distributed File System),簡稱HDFS。HDFS有高容錯性的特點,並且設計用來部署在低廉的(low-cost)硬體上;而且它提供高吞吐量(high throughput)來訪問應用程式的資料,適合那些有著超大資料集(large data set)的應用程式。HDFS放寬了(relax)POSIX的要求,可以以流的形式訪問(streaming access)檔案系統中的資料。
下面我們就來在虛擬機器上在安裝一下單結點的hadoop吧。
一、ssh免密碼登入
Hadoop的程序之間同信使用ssh方式,需要每次都要輸入密碼。為了實現自動化操作,需要配置ssh免密碼登陸方式。
1.停止並禁用防火牆
systemctl stop firewalld && systemctl disable firewalld
2.開啟sshd服務
需要編輯/etc/ssh/sshd_config
開啟sshd服務.
vi /etc/ssh/sshd_config
放開標註的文件(去掉#):
重啟服務,使剛才的修改生效(centos7上命令)
systemctl restart sshd.service
3.修改/etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain 4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
# add
192.168.89.130 master
4、修改/etc/sysconfig/network
# Created by anaconda
NETWORKING=yes
HOSTNAME=master
使用如下命令使剛才的修改/etc/sysconfig/network生效
source /etc/sysconfig/network
service network restart
5.建立hadoop使用者
adduser hadoop '123456'
6.建立hdfs目錄
su hadoop
cd ~
建立如下目錄的資料夾
- home
- hadoop
- hdfs
- data
- name
- hdfs
- hadoop
mkdir -p hdfs/data
mkdir -p hdfs/name
7.生成ssh公私鑰對
生成ssh公私鑰對,輸入如下命令然後一路回車.
這時候會在/home/hadoop/下生成.ssh目錄,目錄中有檔案id_rsa和id_rsa.pub。下面我們實現免密登陸過程
cd .ssh/
cat id_rsa.pub >> authorized_keys
chmod 644 authorized_keys
這時候在.ssh目錄下會多出一個authorized_keys檔案。下面我們測試下是否能免密登陸
如有提示輸入“yes”回車即可。之後可以看到免密登陸成功.
二、安裝hadoop
1.官網下載hadoop
可以到官網下載 hadoop-2.8.0,然後通過rz上傳到虛擬機器當中。
解壓hadoop到/usr/local目錄
tar -zxvf hadoop-2.8.0 -C /usr/local
chown -R hadoop:hadoop /usr/local/hadoop-2.8.0
2、配置hadoop環境變數
修改/etc/profile,配置環境變數。
export JAVA_HOME=/usr/local/jdk1.8.0_111
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export HADOOP_HOME=/usr/local/hadoop-2.8.0
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
3、修改hadoop配置檔案
修改hadoop配置檔案 hadoop安裝目錄/etc/hadoop 修改的檔案,需要修改的檔案如下:
hadoop-env.sh
yarn-env.sh
core-site.xml
hdfs-site.xml
mapred-site.xml
yarn-site.xml
slaves
在目錄中我們可以看到並沒有mapred-site.xml
,但是有mapred-site.xml.template
,所以我們可以做如下操作。
cp mapred-site.xml.template mapred-site.xml
3.1 hadoop-env.sh
在檔案中增加如下配置:
export JAVA_HOME=/usr/local/jdk1.8.0_111
export HADOOP_PREFIX=/usr/local/hadoop-2.8.0
修改後如下:
3.2 yarn-env.sh
yarn-env.sh在檔案中增加如下配置:
export JAVA_HOME=/usr/local/jdk1.8.0_111
修改後如下:
3.3 core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.home.dir</name>
<value>file:/home/hadoop/hdfs</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/home/hadoop/hdfs</value>
</property>
</configuration>
3.4 hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:50090</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/hadoop/hdfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/hadoop/hdfs/data</value>
</property>
</configuration>
3.5 mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
</configuration>
3.6 yarn-site.xml
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>master:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:8088</value>
</property>
</configuration>
3.7 slaves
修改slaves,加入節點主機名稱,儲存並退出:
master
4.格式化namenode命令
hdfs namenode -format
5. 啟動hadoop
# 啟動hadoop方法一
start-all.sh
# 啟動hadoop方法二
start-dfs.sh
start-yarn.sh
6、啟動成功
訪問http://192.168.89.130:8088/
,顯示如下頁面:
訪問http://192.168.89.130:50070/
,顯示如下頁面:
三、遇到的問題
訪問但是http://192.168.89.130:8088/
成功,但是訪問”http://192.168.89.130:50070/”不成功。發現data下面沒有檔案。
把name下面的檔案copy到data資料夾下面。
cp -r name/* data/
其實當你真正啟動成功使用jps命令可以看到如下顯示當前所有java程序pid。