Hadoop 2.7.0在centos7分散式叢集上的部署與測試
Author: Wingter Wu
1 環境說明
VitualBox 5.0.24
CentOS-7-x86_64-Minimal-1611:http://isoredirect.centos.org/centos/7/isos/x86_64/CentOS-7-x86_64-Minimal-1611.iso
JDK 1.7u75:網盤
Hadoop-2.7.0-bin.tar.gz:http://mirrors.hust.edu.cn/apache/hadoop/common/
主要參考資料:
輔助資料:
http://blog.csdn.net/stark_summer/article/details/43484545(配置檔案+官方配置項列表)
2 安裝VM系統
2.1 配置虛擬機器
磁碟:本文配20G,動態分配,vdi格式
記憶體:1G-2G
CPU:一核
網路:網路方式使用 橋接網絡卡最為簡單。
2.2安裝CentOS VM
設定->新增虛擬光碟機-> CentOS-7-x86_64-Minimal-1611.iso
啟動虛擬機器,進入CentOS 7安裝
分割槽:
採用普通分割槽,LVM未嘗試過
掛載點大小分配(總大小20GB):/boot=200M, /=10G, swap=1G (或2倍記憶體),剩下給/home
網路和主機名:
主機名設定為hadoop.master(其實不建議用’.’,可能在Bash提示符處顯示不全)
網路設定:
Ipv4:設為固定(192.168.1.103),並在路由器管理頁面進行mac-ip繫結
掩碼:255.255.255.0
閘道器:192.168.1.1(路由器的ip)
DNS伺服器:222.201.130.30 222.201.130.33 (同宿主機)
開始安裝…...(同時設定root密碼,可不建立hadoop使用者,可以直接在root上部署hadoop,或者後續再建立)
完成安裝,重新啟動虛擬機器。
2.3CentOSVM環境配置
Note: 為了減少工作量,本文件的思路是在hadoop.master上完成所有配置(i.e., 網路(克隆後需在slaves上調整)+JDK+Hadoop),然後再克隆出slave1和slave2,微調網路後再配置SSH,就完成了叢集搭建。
下面開始配置hadoop.master這個主節點
網路配置:centos7.0初始化時並沒有ifconfig指令,需要使用下面兩個指令進行安裝:
#yum search ifconfg
#yum install net-tools.x86_64
輸入ifconfig 檢視是否正常獲取IP地址,使用ping命令確認能否上網。
為了使用ssh,關閉防火牆(和SElinux):
#systemctlstop firewalld
關閉SElinux:
#getenforce
#setenforce 0
設定hostname,設定為hadoop.master,需要修改的檔案包括:
#vim/etc/sysconfig/network
#vim/etc/hostname
#vim/etc/hosts
配置本地hosts,這裡假設兩臺slave的ip已經確定了(雖然還未克隆出來)
# vim/etc/hosts
192.168.1.103 hadoop.master
192.168.1.104 hadoop.slave1
192.168.1.105 hadoop.slave2
2.4 JAVA配置:
一般linux中都已經開啟了ssh功能。
使用宿主機的ssh客戶端(e.g., SSH Secure Shell Client),上傳jdk和hadoop。
Jdk1.7安裝到/usr/java中:
#tar zxvf jdk-7u75-linux-x64.tar.gz–C /usr/java
軟連線以方便設定envs
#ln –s jdk1.7.0_75 jdk
設定Java環境變數,可以直接修改/etc/profile,更容易維護的方式新建是/etc/profile.d/java.sh
#vim /etc/profile.d/java.sh
寫入如下內容:
exportJAVA_HOME=/usr/java/jdk
exportJRE_HOME=/usr/java/jdk/jre
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
使之生效:
#source /etc/profile
2.5 Hadoop配置:
假設從host上傳過來的Hadoop在~/
解壓(安裝)到/usr/hadoop:
#tar zxvf hadoop-2.7.0.tar.gz –C/usr/hadoop/hadoop-2.7.0.tar.gz
配置Hadoop相關環境變數:
#vim /etc/profile.d/hadoop.sh
寫入:
export HADOOP_HOME=/usr/hadoop
export PATH=${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin${PATH}
exportHADOOP_MAPRED_HOME=${HADOOP_HOME}
exportHADOOP_COMMON_HOME=${HADOOP_HOME}
exportHADOOP_HDFS_HOME=${HADOOP_HOME}
export YARN_HOME=${HADOOP_HOME}
exportHADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_HOME}/lib/native
export HADOOP_OPTS="-Djava.library.path=${HADOOP_HOME}/lib: ${HADOOP_HOME}/lib/native"
使之生效:
#source /etc/profile
配置Hadoop的各種配置檔案:
設定hadoop-env.sh、yarn-env.sh、mapred-env.sh中的java環境變數
#cd/usr/hadoop/etc/hadoop/
#vimhadoop-env.sh
#vim yarn-env.sh
#vim mapred-env.sh
// 修改JAVA_HOME
export JAVA_HOME=/usr/java/jdk
配置core-site.xml檔案(指定了Namenode):
#vimcore-site.xml
// 修改檔案內容為以下
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/hadoop/tmp</value>
<description>A base for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name> #原文是fs.default.name,這兩個屬性在官網都有
<value>hdfs://hadoop.master:9000</value>
</property>
</configuration>
配置hdfs-site.xml檔案(指定HDFS塊在本地的儲存位置、副本數):
#vim hdfs-site.xml
// 修改檔案內容為以下
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:///usr/hadoop/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///usr/hadoop/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.nameservices</name>
<value>hadoop-cluster1</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>Master.Hadoop:50090</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>
配置mapred-site.xml檔案(指定mapred採用框架yarn和一系列狀態查詢介面):
#vim mapred-site.xml
// 修改檔案為以下
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
<final>true</final> #應該可以不要
</property>
<property>
<name>mapreduce.jobtracker.http.address</name>
<value>Master.Hadoop:50030</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>Master.Hadoop:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>Master.Hadoop:19888</value>
</property>
<property>
<name>mapred.job.tracker</name>
<value>http://Master.Hadoop:9001</value>
</property>
</configuration>
配置yarn-site.xml檔案(指定resourcemanager位置和一系列狀態查詢介面):
#vim yarn-site.xml
<configuration>
// 修改檔案內容為以下
<property>
<name>yarn.resourcemanager.hostname</name>
<value>Master.Hadoop</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>Master.Hadoop:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>Master.Hadoop:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>Master.Hadoop:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>Master.Hadoop:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>Master.Hadoop:8088</value>
</property>
</configuration>
修改Master主機上的slaves檔案(這兩個檔案在兩個slaves上應該不需要)
#cd/usr/hadoop/etc/hadoop
#vim slaves (Hadoop2.x似乎沒有master檔案)
// 將檔案內容修改為兩個slaves的主機名
hadoop.slave1
hadoop.slave2
*現在hadoop.master的所有內容已經配置完成。
2.6 複製出slaves
先在VirtualBox”全域性設定”中設定“預設虛擬電腦儲存位置”
然後克隆hadoop.master
副本型別:“完全複製”;備份:“全部”;不勾選“重新初始化所有Mac”
如下圖:
或者用VBoxManage命令形式(未試過):
C:\Program Files\Oracle\VirtualBox>VBoxManage clonehd"D:\Linux\CentOS\h1.vdi" "D:\Linux\CentOS\h2.vdi"
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Clone hard disk created in format 'VDI'. UUID:74a09b9d-c4d8-4689-9186-87e34e4b5265
2.7 修改slaves上的各種配置
啟動克隆出來的slave前,在Hypervisor內重新生成其Mac地址,因為預設克隆出來和master一樣的
分別登入3臺虛擬機器內,將IP地址與hostname,hosts修改正確,使之能互相ping通
#vim/etc/hostname
hadoop.slave1
#vim/etc/hosts
Note: 第一行127.0.0.1的解析名中不可以包含主機名(如hadoop.slave1),否則會導致Datanode連不上Namenode
第二行開始和master配置的一樣,就是一個DNS本地解析
#vim/etc/sysconfig/network
NETWORKING=yes
HOSTNAME=hadoop.slave1
修改IP地址:
#vim /etc/sysconfig/network-scripts/ifcfg-eth0 #最後這個網絡卡名看情況
(上圖不是slave1的配置,只是示例;實際IP應為192.168.1.10x,掩碼24/32,閘道器192.168.1.1)
刪掉UUID和HWADDR這兩行(重啟會自動生成)
更改完成以後儲存並退出,然後刪除Linux實體地址繫結的檔案(該檔案會在作業系統重啟並生成實體地址以後將實體地址繫結到IP上);
如果不刪除,則作業系統會一直繫結著克隆過來的實體地址;
最簡單的解決辦法是直接刪除70-persistent-net.rules配置檔案
#rm -fr /etc/udev/rules.d/70-persistent-net.rules
(這一檔案我在克隆出的slave沒有發現,相似的檔案/etc/udev/rules.d/70-persistent-ipoib.rules也全是註釋,所有沒有做這一步)
#reboot
重啟系統就ok了,系統會自動生成一個新的。
啟動hadoop.master和兩臺slaves,嘗試互相ping一下,測試網路接通性。
2.8 在三臺VM上配置SSH無密碼登入
// 據說RSA認證原理大致是:master要免密登陸slave,所以生成一對公私鑰併發送公鑰給slave,slave將id_rsa.pub內容加入自己的信任名單;master發起SSH連線時,slave向master回覆一串內容,master用私鑰加密並回送,slave用master的公鑰解密,內容一致就完成認證,因此而免去密碼驗證。
以下在hadoop.master主機上配置
輸入以下指令生成ssh
#ssh-keygen
// 會生成兩個檔案,放到預設的/root/.ssh/資料夾中(我採用root作為hadoop使用者的賬戶)
把id_rsa.pub追加到授權的key裡面去
#cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
修改檔案”authorized_keys”許可權
#chmod 600 ~/.ssh/authorized_keys
設定SSH配置
#Vim /etc/ssh/sshd_config
// 以下三項修改成以下配置(可以先不做)
RSAAuthentication yes # 啟用 RSA 認證
PubkeyAuthentication yes # 啟用公鑰私鑰配對認證方式
AuthorizedKeysFile .ssh/authorized_keys # 公鑰檔案路徑(和上面生成的檔案同)
重啟ssh服務
#service sshd restart
把公鑰複製所有的Slave機器上
#格式:scp ~/.ssh/id_rsa.pub 遠端使用者名稱@遠端伺服器IP:~/
#scp ~/.ssh/id_rsa.pub [email protected]:~/
#scp ~/.ssh/id_rsa.pub [email protected]:~/
以下在Slave主機上配置
在slave主機上建立.ssh資料夾
#mkdir ~/.ssh
// 修改許可權
#chmod 700 ~/.ssh
追加到授權檔案”authorized_keys”
#cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
修改許可權
#chmod 600 ~/.ssh/authorized_keys
刪除無用.pub檔案
#rm –r ~/id_rsa.pub
在master主機下進行測試
#ssh192.168.1.104
#ssh 192.168.1.105
2.9 關閉各節點的防火牆
#serviceiptables stop# 但centos7預設防火牆不是iptables
#servicefirewalld stop # 暫時關閉
#systemctl disable firewalld.service # 禁止firewall開機啟動
可以把SELinux也關閉了
#sestatus # 檢視狀態
#setenforce 0 # 關閉
2.11 測試hadoop
登入hadoop.master測試Hadoop:
格式化HDFS檔案系統:
# 在Master主機上輸入以下指令
#hadoop namenode -format
啟動HDFS和Yarn
#cd /usr/hadoop/sbin
#./start-all.sh
// 更推薦的執行方式:
#cd /usr/hadoop/sbin
#./start-dfs.sh
#./start-yarn.sh
應該輸出以下資訊:
Startingnamenodes on [Master.Hadoop]
Master.Hadoop:starting namenode, logging to /usr/hadoop/logs/hadoop-root-namenode-localhost.localdomain.out
Slave2.Hadoop:starting datanode, logging to /usr/hadoop/logs/hadoop-root-datanode-Slave2.Hadoop.out
Slave1.Hadoop:starting datanode, logging to /usr/hadoop/logs/hadoop-root-datanode-Slave1.Hadoop.out
starting yarndaemons
startingresourcemanager, logging to /usr/hadoop/logs/yarn-root-resourcemanager-localhost.localdomain.out
Slave1.Hadoop:starting nodemanager, logging to /usr/hadoop/logs/yarn-root-nodemanager-Slave1.Hadoop.out
Slave2.Hadoop: starting nodemanager, logging to/usr/hadoop/logs/yarn-root-nodemanager-Slave2.Hadoop.out
通過JPS檢視程序啟動結果:
# 直接在Master或Slave輸入指令:
#jps
# 應該輸出以下資訊(埠號僅供參考)
# Master:
3930 ResourceManager
4506 Jps
3693 NameNode
# Slave:
2792 NodeManager
2920 Jps
2701DataNode
通過hadoop的dfsadmin命令檢視叢集狀態(可能需稍等HDFS退出safe-mode):
//輸入以下指令
#hadoop dfsadmin –report
// 應該輸出以下資訊:
ConfiguredCapacity: 14382268416 (13.39 GB)
PresentCapacity: 10538565632 (9.81 GB)
DFS Remaining: 10538557440 (9.81 GB)
DFS Used: 8192 (8 KB)
DFS Used%: 0.00%
Under replicatedblocks: 0
Blocks with corruptreplicas: 0
Missing blocks: 0
Missing blocks (with replicationfactor 1): 0
-------------------------------------------------
Live datanodes (2):
Name: 192.168.1.104:50010 (hadoop.slave1)
Hostname: hadoop.slave1
DecommissionStatus : Normal
ConfiguredCapacity: 7191134208 (6.70 GB)
DFS Used: 4096 (4 KB)
Non DFS Used: 1921933312 (1.79 GB)
DFS Remaining: 5269196800 (4.91 GB)
DFS Used%: 0.00%
DFS Remaining%: 73.27%
Configured Cache Capacity: 0 (0 B)
Cache Used: 0 (0 B)
Cache Remaining: 0 (0 B)
Cache Used%: 100.00%
Cache Remaining%: 0.00%
Xceivers: 1
Last contact:Thu Jul 0210:45:04 CST 2017
Name: 192.168.1.105:50010 (hadoop.slave2)
Hostname: hadoop.slave2
DecommissionStatus : Normal
ConfiguredCapacity: 7191134208 (6.70 GB)
DFS Used: 4096 (4 KB)
Non DFS Used: 1921769472 (1.79 GB)
DFS Remaining: 5269360640 (4.91 GB)
DFS Used%: 0.00%
DFS Remaining%: 73.28%
Configured Cache Capacity: 0 (0 B)
Cache Used: 0 (0 B)
Cache Remaining: 0 (0 B)
Cache Used%: 100.00%
Cache Remaining%: 0.00%
Xceivers: 1
停止yarn和hdfs程序:
#stop-yarn.sh
#stop-dfs.sh
3 MR程式測試
現在寫一個MyWordCount來在叢集上執行一下:
筆者參照WordCount的標準實現,它可以在Hadoop安裝包裡找到,包含該.java的具體路徑:
hadoop-2.7.0.tar.gz\hadoop-2.7.0\share\hadoop\mapreduce\sources\ hadoop-mapreduce-examples-2.7.0-sources
解壓之後可以找到org\apache\hadoop\examples中找到WordCount.java
參照景仰的Official codes,我簡化包結構,重名為主類為MyWordCount,程式碼如下:
/*
* MyWordCount.java
* This is a version of wordcount coded by
* by Wingter
* on 06/20/2017
* basically identical to the officialimplementation of wordcount
* provided inhadoop-mapreduce-2.7.0-sources.jar
* as org.apache.hadoop.examples.WordCount.java
* This class of mine is named MyWordCount andused to test Hadoop 2.7.0
*/
package hadoopTests;
import java.io.IOException;
importjava.util.StringTokenizer;
importorg.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
importorg.apache.hadoop.io.IntWritable;
importorg.apache.hadoop.io.Text;
importorg.apache.hadoop.mapreduce.Job;
importorg.apache.hadoop.mapreduce.Mapper;
importorg.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
importorg.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
importorg.apache.hadoop.util.GenericOptionsParser;
public class MyWordCount {
public static class TokenizerMapper extendsMapper<Object, Text, Text, IntWritable>{
private final static IntWritable one = newIntWritable(1);
private Text word = new Text();
public void map(Object key, Text value,Context context) throws IOException, InterruptedException {
StringTokenizer itr = newStringTokenizer(value.toString());
while(itr.hasMoreTokens()){
word.set(itr.nextToken());
context.write(word,one);
}
}
}
public static class IntSumReducer extendsReducer<Text, IntWritable, Text, IntWritable>{
private IntWritable result = newIntWritable();
public void reduce(Text key,Iterable<IntWritable> values, Context context) throws IOException,InterruptedException{
int sum = 0;
for(IntWritable val : values){
sum += val.get();
}
result.set(sum);
context.write(key, result);
}
}
public static void main(String[] args) throwsException{
Configuration conf = new Configuration();
String[] otherArgs = newGenericOptionsParser(conf, args).getRemainingArgs();
if(otherArgs.length < 2){
//otherArgs begin from <input path>and end with <output path>
System.err.println("Usage:MyWordCount <in> [<in>..] <out>");
System.exit(2);
}
Job job = Job.getInstance(conf, "wwtword count");
job.setJarByClass(MyWordCount.class);
job.setMapperClass(TokenizerMapper.class);
job.setCombinerClass(IntSumReducer.class);
job.setReducerClass(IntSumReducer.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);
for(int i=0;i<otherArgs.length-1;i++){
FileInputFormat.addInputPath(job, newPath(otherArgs[i]));
}
FileOutputFormat.setOutputPath(job, newPath(otherArgs[otherArgs.length-1]));
System.exit(job.waitForCompletion(true)?0:1);
}
}
該程式碼MyWordCount.java放在~/programs/hadoopTests/下,儲存程式碼(:wq)之後,因為要在命令列下用javac編譯它,mapreduce程式自然要依賴hadoop的一些jar包。
舊版的Hadoop標準編譯方式是:
#javac-classpath $HADOOP_HOME/hadoop-core-1.0.1.jar -d MyWordCount/ MyWordCount.java //這是因為舊版程式依賴的包都在core那一個包裡面
但到了2.x版本,需要包含多個包。
據資料<http://blog.csdn.net/wang_zhenwei/article/details/47439623>說,例如2.4.1版本需要:
$HADOOP_HOME/share/hadoop/common/hadoop-common-2.4.1.jar
$HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-client-core-2.4.1.jar
$HADOOP_HOME/share/hadoop/common/lib/commons-cli-1.2.jar
所以一個辦法是在-classpath後面敲上它們。
一個更為機智的辦法是在JAVA環境變數CLASSPATH中就設定好,這樣直接javac即可編譯。
最為機智的方法來確定MapReduce程式依賴包的方法是(在/etc/profile.d/Hadoop.sh中加入):
#export CLASSPATH=$($HADOOP_HOME/bin/hadoop classpath):$CLASSPATH
# 因為命令hadoop classpath直接告訴你它所有的依賴包路徑了。
所以現在,編譯的命令僅僅是:
#javac –d myWordCount/ MyWordCount.java
# -d表示輸出到myWordCount目錄下,等下直接對這個目錄打包;
# 指明-d選項,編譯完後,該目錄下會自動生成hadoopTests/的子目錄(因為程式碼中申明瞭package),不加-d則會使所有.class散佈在當前目錄下,不利於jar打包。
打包成jar:
#jar –cvf myWordCount.jar –C myWordCount/ .
# 不要忘記最後的.,-C代表臨時進去myWordCount目錄搜尋.class並且不建立新的目錄(即jar包內最外層不會是myWordCount/),最後的.代表回到當前工作目錄。
弄些資料並上傳至hdfs:
#hadoop dfs –mkdir /testdata #HDFS的組織結構如同linux,以/為根
#hadoop dfs –copyFromLocal ~/testdata/wikepedia.txt /testdata/
執行MyWordCount作業:
#hadoop jar ~/programs/myWordCount.jarhadoopTests.MyWordCount /testdata /output
# 其中hadoopTests.MyWordCount是主類名,注意帶上包結構;/output是HDFS輸出目錄,需要不存在
執行結束,檢視輸出和job狀態
#hadoop dfs –cat /testdata/part-r-0000
RM上檢視Log:
#lessHADOOP_HOME/logs/yarn-root-resourcemanager-hadoop.master.log
#less檢視時,方向鍵翻行,G跳至最後
Web介面檢視作業狀態:192.168.1.103:8088
Web介面檢視輸出檔案:192.168.1.103:50070 -> Utilities -> Browse the file system:
4 測試Hadoop-streaming:
原理:
Streaming工具會建立MapReduce作業,在各節點啟動執行使用者指定指令碼/程式的程序,同時監控整個作業的執行過程。Hadoop會自動解析資料檔案(成行)到Mapper或者Reducer的標準輸入中,以供它們讀取使用。mapper和reducer會從標準輸入中讀取使用者資料,一行一行處理後傳送給標準輸出,Hadoop再對標準輸出自動進行kv化。
以mapper為例,如果一個檔案(可執行或者指令碼)作為mapper,mapper初始化時,每一個mapper任務會把該檔案作為一個單獨程序啟動,mapper任務執行時,它把輸入切分成行並把每一行提供給可執行檔案程序的標準輸入。 同時,mapper收集可執行檔案程序標準輸出的內容,並把收到的每一行內容轉化成key/value對,作為mapper的輸出。 預設情況下,一行中第一個tab之前的部分作為key,之後的(不包括tab)作為value。如果沒有tab,整行作為key值,value值為null。
對於reducer,類似。
Hadoop-streaming的使用套路:
//hadoop2.7的streaming工具包在:$HADOOP_HOME/share/hadoop/tools/lib /hadoop-streaming-2.7.0.jar
$HADOOP_HOME/bin/hadoop jar $HADOOP_HOME/share/hadoop/tools/libhadoop-*-streaming.jar \
-input myInputDirs \
一、準備三臺虛擬機器hadoop 192.168.131.128
localhost131 192.168.131.131
localhost134 192.168.131.134(以上是我的三臺虛擬機器的hostname 和 ip)hadoop 是 master 的 hos
Service mesh旨在解決雲原生應用之間服務拓撲的連線問題。如果你想要構建雲原生應用,那麼就需要Service mesh。Istio是Service mesh中的一個明星專案,在Istio文件中對其有非常全面的介紹:https://istio.io/docs/conce
問題:
如果你明明安裝配置了 JAVA_HOME 卻還是報錯
如果遇到 Error: JAVA_HOME is not set and could not be found.
的錯誤,而你明
Apache HBase 是一個高可靠性、高效能、面向列、可伸縮的分散式儲存系統,是NoSQL資料庫,基於Google Bigtable思想的開源實現,可在廉價的PC Server上搭建大規模結構化儲存叢集,利用Hadoop HDFS作為其檔案儲存系統,利用Hadoo
Author: Wingter Wu
1 環境說明
VitualBox 5.0.24
CentOS-7-x86_64-Minimal-1611:http://isoredirect.centos.org/centos/7/isos/x86_64/CentOS-7-x86_6
安裝簡介
安裝Hadoop叢集通常需要在叢集中的所有機器上進行統一安裝,或者通過適合目標作業系統的打包系統進行安裝。
安裝的要點是對不同的節點分配不同的功能。
其他服務(例如Web App Proxy Server和MapReduce作業歷史記錄伺服器)通常根據負載在專用硬體或共享裝置上
準備
JDK。
SSH。
下載hadoop-2.7.4.tar.gz
本地模式
1.tar開hadoop包
$>tar -zxvf hadoop-2.7.4.tar.gz
2.配置環境變數
[etc/environment]
PATH=...:had
一.環境說明
虛擬機器:vmware 11
作業系統:Ubuntu 16.04
Hadoop版本:2.7.2
Zookeeper版本:3.4.9
二.節點部署說明
三.Hosts增加配置
sudo gedit /etc/hosts
wxzz-pc、wxzz-pc0、
配置雙namenode的目的就是為了防錯,防止一個namenode掛掉資料丟失,具體原理本文不詳細講解,這裡只說明具體的安裝過程。Hadoop HA的搭建是基於Zookeeper的,關於Zookeeper的搭建可以檢視這裡 hadoop、zookeeper、hbase、spa
本篇主要演示在Linux上安裝單節點Hadoop模式,以及偽分散式Hadoop模式。一 安裝環境作業系統:Oracle Linux Server release 6.5;Java版本:java-1.7.0-openjdk-1.7.0.45;Hadoop版本:hadoop-2.
今天在阿里雲伺服器上部署hadoop時,master上執行jps時,只有secondarynamenode和jps程序,並無ResourceManager和NameNode的程序,仔細看了一下log,發現錯誤是Prob
1. 無密碼登入localhost的設定
1. ssh-keygen -t rsa
Press enter for each line
2. cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
3. chmod sbin oot oop .com body acl border tool user 本次測試環境如下
IP
host
JDK
linux
hadop
role
172.16.101.55
sht-sgmhadoopnn-01
1.8.0_111
hadoop 2.7.7 安裝(測試環境部署) hadoop2.x部署
系統環境(censtos 6.5 ):
172.16.57.97 namenodeyw
172.16.57.98 datanodeyw1
172.16.57.238 datanodeyw2
準備環境
CentOS 7
jdk1.8 (這裡建議使用1.8版本的jdk 連結:https://www.oracle.com/technetwork/ja
這裡使用自己編譯的hadoop-2.7.0版本部署在windows上,記得幾年前,部署hadoop需要藉助於cygwin,還需要開啟ssh服務,最近發現,原來不需要藉助cygwin,也無需開啟ssh免密登入這些類linux的複雜流程。直接就可以sbin/sta
CentOS 6.5 hadoop 2.7.3 叢集環境搭建
所需硬體,軟體要求
使用 virtualbox 構建三臺虛擬機器模擬真實物理環境
作業系統:CentOS6.5
主機列表:
master ip: 192.168.3.171
slav
一. 環境介紹
三臺主機,主機名和ip分別為:
ubuntu1 10.3.19.171
ubuntu2 10.3.19.172
ubuntu3 10.3.19.173
三臺主機的登入使用者名稱是bigdata,home目錄是/home/bigdata
現在三臺主機上
目標
本文描述瞭如何安裝、配置和管理有實際意義的Hadoop叢集,其規模可從幾個節點的小叢集到幾千個節點的超大叢集。如果你希望在單機上安裝Hadoop玩玩,從這裡(Single Node Setup)能找到相關細節。
這份文件不包含更先進話題,比如安
0 前言:
1)Hadoop叢集搭建參照前一篇博文Hadoop叢集安裝配置教程
2)叢集有三個節點:Master、Slave1、Slave2,其中Master只作namenode,其餘兩個從節點做datanode
1 搭建過程中常用Hadoop指令:
1 相關推薦
Centos7 實現Hadoop-2.9.1分散式叢集搭建和部署(三臺機器)
如何使用Rancher 2.0在Kubernetes叢集上部署Istio
Hadoop 2.7 偽分散式安裝配置 Error: JAVA_HOME is not set and could not be found.
HBase 1.2.6 完全分散式叢集安裝部署詳細過程
Hadoop 2.7.0在centos7分散式叢集上的部署與測試
hadoop-2.7.4-翻譯文件-分散式叢集搭建
hadoop-2.7.4-翻譯文件-叢集部署
hadoop 2.7.2 + zookeeper 高可用叢集部署
Hadoop-2.7.6雙namenode配置搭建(HA)高可用叢集部署教程
【Hadoop】Hadoop 2.7.6安裝_偽分散式叢集
阿里雲伺服器部署分散式hadoop 2.7時,NameNode啟動報Problem binding to [master:9000]問題
Mac上通過偽分佈方式部署Hadoop 2.7.2
Hadoop 2.7.3 完全分布式部署
hadoop 2.7.7 安裝(測試環境部署) hadoop2.x部署
hadoop-2.7.6 完全分散式的安裝
windows部署hadoop-2.7.0
CentOS 6.5 hadoop 2.7.3 叢集環境搭建
3臺機器配置hadoop-2.7.3叢集
Hadoop(2.7.3)叢集配置-官方文件
Hadoop-2.7.3叢集搭建中遇到的問題總結