在ECS实例的centos系统中安装Hadoop
返回《在阿里云中搭建大數據實驗環境》首頁
提示:本教程是一個系列文章,請務必按照本教程首頁中給出的各個步驟列表,按照先后順序一步步進行操作,本博客假設你已經順利完成了之前的操作步驟。
在阿里云ECS的Ubuntu系統中安裝Hadoop,和在本地電腦安裝Hadoop,基本相似,但是,也有略微差別,必須正確配置,否則,會導致無法順利啟動。安裝Hadoop之前,請確保已經根據前面的博客《在ECS實例的Ubuntu系統中安裝Java》完成了Java的安裝。
我們已經把Hadoop的安裝包hadoop-2.7.1.tar.gz放在了百度云盤(建議選擇2.7.1版本,確保和本教程的其他大數據軟件在版本上能夠兼容,選擇其他Hadoop版本,可能導致其他軟件會運行出錯),可以點擊這里到百度云盤下載Hadoop安裝包。把壓縮格式的文件hadoop-2.7.1.tar.gz下載到本地電腦,然后,參考之前的FTP使用指南,在本地電腦中,使用FTP軟件,使用用戶名linziyu連接阿里云ECS實例,把hadoop-2.7.1.tar.gz這個壓縮格式文件上傳到遠程的阿里云ECS實例的Ubuntu系統中,可以上傳到Ubuntu系統的“/home/linziyu/Downloads/”目錄下。
根據本教程前面博客介紹的方法,采用用戶名linziyu,使用Putty連接ECS中的Ubuntu系統,進入命令行界面,或者也可以使用VNCViewer連接ECS中的Ubuntu系統打開“終端”進入命令行界面。總之,一定要進入命令行界面,這樣可以在里面輸入Shell命令,來安裝Java。
假設現在已經進入命令行界面中,當前登錄用戶名是linziyu。
更新apt
用linziyu 用戶登錄后,我們先更新一下 apt,后續我們使用 apt 安裝軟件,如果沒更新可能有一些軟件安裝不了。在命令行界面中執行如下命令:
Shell 命令
安裝SSH、配置SSH無密碼登陸
Hadoop集群、單節點模式都需要用到 SSH 登陸(類似于遠程登陸,你可以登錄某臺 Linux 主機,并且在上面運行命令),Ubuntu 默認已安裝了 SSH client,此外還需要安裝 SSH server:sudo apt-get install openssh-server
Shell 命令
安裝后,可以使用如下命令登陸本機:
ssh localhostShell 命令
此時會有如下提示(SSH首次登陸提示),輸入 yes 。然后按提示輸入密碼 hadoop,這樣就登陸到本機了。
SSH首次登陸提示
但這樣登陸是需要每次輸入密碼的,我們需要配置成SSH無密碼登陸比較方便。
首先退出剛才的 ssh,就回到了我們原先的終端窗口,然后利用 ssh-keygen 生成密鑰,并將密鑰加入到授權中:
Shell 命令
此時再用?ssh localhost?命令,無需輸入密碼就可以直接登陸了,屏幕上會顯示如下信息:
linziyu@iZbp11gznj7n38xkztu64dZ:~$ ssh localhost Welcome to Ubuntu 14.04.5 LTS (GNU/Linux 4.4.0-93-generic x86_64)* Documentation: https://help.ubuntu.com/ 23 packages can be updated. 9 updates are security updates. New release '16.04.4 LTS' available. Run 'do-release-upgrade' to upgrade to it. Your Hardware Enablement Stack (HWE) is supported until April 2019. Welcome to Alibaba Cloud Elastic Compute Service ! Last login: Fri Apr 6 10:51:13 2018 from 118.12.231.185安裝Java
安裝Hadoop之前,請確保已經根據前面的博客《在ECS實例的Ubuntu系統中安裝Java》完成了Java的安裝。
修改hostname配置文件
sudo vim /etc/hostsShell 命令
打開這個配置文件以后,在里面增加一行“192.168.1.106 iZbp11gznj7n38xkztu64dZ”,增加以后的效果如下:
192.168.1.106 iZbp11gznj7n38xkztu64dZ 127.0.0.1 localhost # The following lines are desirable for IPv6 capable hosts ::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters增加的一行“192.168.1.106 iZbp11gznj7n38xkztu64dZ”中,192.168.1.106是阿里云ECS實例的私有IP地址,iZbp11gznj7n38xkztu64dZ是ECS實例中的Ubuntu系統的主機名。
安裝 Hadoop
我們選擇將 Hadoop 安裝至 /usr/local/ 中,用linziyu用戶登錄Ubuntu系統后,在命令行終端中,執行如下命令:
cd ~ sudo tar -zxf ~/Downloads/hadoop-2.7.1.tar.gz -C /usr/local # 解壓到/usr/local中 cd /usr/local/ sudo mv ./hadoop-2.7.1/ ./hadoop # 將文件夾名改為hadoop sudo chown -R linziyu:linziyu ./hadoop # 修改文件權限?
Shell 命令
Hadoop 解壓后即可使用。輸入如下命令來檢查 Hadoop 是否可用,成功則會顯示 Hadoop 版本信息
?
cd /usr/local/hadoop ./bin/hadoop versionShell 命令
Hadoop偽分布式配置
Hadoop 可以在單節點上以偽分布式的方式運行,Hadoop 進程以分離的 Java 進程來運行,節點既作為 NameNode 也作為 DataNode,同時,讀取的是 HDFS 中的文件。
Hadoop 的配置文件位于 /usr/local/hadoop/etc/hadoop/ 中,偽分布式需要修改2個配置文件?core-site.xml?和?hdfs-site.xml?。Hadoop的配置文件是 xml 格式,每個配置以聲明 property 的 name 和 value 的方式來實現。
修改配置文件?core-site.xml?(使用vim編輯器:?vim /usr/local/hadoop/etc/hadoop/core-site.xml),該文件原來的內容如下:
XML
請把該文件修改為下面配置:
?
注意,在上面這個core-site.xml文件中,“hdfs://192.168.1.106:9000”的IP地址是你的阿里云ECS實例的“私網IP地址”192.168.1.106,不是公網IP地址。你的私網IP地址可能不是這個,可以登錄阿里云控制臺,查詢自己的ECS實例的私網IP地址。
同樣的,修改配置文件?hdfs-site.xml:
?
Hadoop配置文件說明
Hadoop 的運行方式是由配置文件決定的(運行 Hadoop 時會讀取配置文件),因此如果需要從偽分布式模式切換回非分布式模式,需要刪除 core-site.xml 中的配置項。
此外,偽分布式雖然只需要配置 fs.defaultFS 和 dfs.replication 就可以運行(官方教程如此),不過若沒有配置 hadoop.tmp.dir 參數,則默認使用的臨時目錄為 /tmp/hadoo-hadoop,而這個目錄在重啟時有可能被系統清理掉,導致必須重新執行 format 才行。所以我們進行了設置,同時也指定 dfs.namenode.name.dir 和 dfs.datanode.data.dir,否則在接下來的步驟中可能會出錯。
配置完成后,執行 NameNode 的格式化:
Shell 命令
成功的話,會看到 “successfully formatted” 和 “Exitting with status 0” 的提示,若為 “Exitting with status 1” 則是出錯。
如果在這一步時提示?Error: JAVA_HOME is not set and could not be found.?的錯誤,則說明之前設置 JAVA_HOME 環境變量那邊就沒設置好,請按教程先設置好 JAVA_HOME 變量,否則后面的過程都是進行不下去的。如果已經按照前面教程在.bashrc文件中設置了JAVA_HOME,還是出現?Error: JAVA_HOME is not set and could not be found.?的錯誤,那么,請到hadoop的安裝目錄修改配置文件“/usr/local/hadoop/etc/hadoop/hadoop-env.sh”,在里面找到“export JAVA_HOME=${JAVA_HOME}”這行,然后,把它修改成JAVA安裝路徑的具體地址,比如,“export JAVA_HOME=/usr/lib/jvm/default-java”,然后,再次啟動Hadoop。
接著開啟 NameNode 和 DataNode 守護進程。
cd /usr/local/hadoop ./sbin/start-dfs.sh #start-dfs.sh是個完整的可執行文件,中間沒有空格Shell 命令
若出現SSH提示,輸入yes即可,啟動過程會顯示如下形式的屏幕信息:
linziyu@iZbp11gznj7n38xkztu64dZ:/usr/local/hadoop$ ./sbin/start-dfs.sh Starting namenodes on [iZbp11gznj7n38xkztu64dZ] iZbp11gznj7n38xkztu64dZ: starting namenode, logging to /usr/local/hadoop/logs/hadoop-linziyu-namenode-iZbp11gznj7n38xkztu64dZ.out localhost: starting datanode, logging to /usr/local/hadoop/logs/hadoop-linziyu-datanode-iZbp11gznj7n38xkztu64dZ.out Starting secondary namenodes [0.0.0.0] 0.0.0.0: starting secondarynamenode, logging to /usr/local/hadoop/logs/hadoop-linziyu-secondarynamenode-iZbp11gznj7n38xkztu64dZ.out啟動時可能會出現如下 WARN 提示:WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable WARN 提示可以忽略,并不會影響正常使用。
啟動以后,使用jps命令查詢進程,如果顯示如下四個進程,則說明Hadoop啟動成功:
如果要停止Hadoop,可以使用如下命令:
cd /usr/local/hadoop ./sbin/stop-dfs.sh總結
以上是生活随笔為你收集整理的在ECS实例的centos系统中安装Hadoop的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: yum知识总结
- 下一篇: 02 | 日志系统:一条 SQL 更新语