1. 程式人生 > >hadoop 集群搭建-suse linux 11

hadoop 集群搭建-suse linux 11

初始 cto hadoop ha rop default gen webhdfs buffer etc

好久都沒寫了啊。感覺自己都不像是一個搞技術都了。
來個存貨吧!

hadoop 集群搭建

3臺機器 suse 系統

規劃

IP 主機名 hostname hadoop角色
10.96.91.93 namenode93 NameNode、SecondaryNameNode 、ResourceManage、 DataNode 、NodeManager
10.96.91.129 datanode129 DataNode NodeManager
10.96.91.130 datanode130 DataNode NodeManager
創建 hadoop 用戶

useradd -u 501 -g users -d /home/hadoop -s /bin/bash hadoop

mkdir /home/hadoop
chown -R hadoop:users /home/hadoop
passwd hadoop 密碼設置
方便記憶,我設置到用戶名和密碼一樣

修改主機名

文件位置 /etc/HOSTNAME

vim /etc/HOSTNAME文件
/etc/rc.d/boot.localnet start

修改host文件 !三臺機器都要修改!

文件位置 /etc/hosts

10.96.91.93 namenode93
10.96.91.129 datanode129
10.96.91.130 datanode130
配置ssh免密碼登錄

ssh-keygen -t rsa
.ssh目錄下

cat id_rsa.pub >> authorized_keys

把自己本機公鑰發送到目標機器

ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop@datanode129
ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop@datanode130
ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop@namenode93
配置環境

文件位置 /etc/profile

export JAVA_HOME=/home/hadoop/jdk1.8.0_191
export JRE_HOME=/home/hadoop/jdk1.8.0_191/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH

export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$JAVA_HOME:$PATH

export HADOOP_HOME=/home/hadoop/hadoop-2.9.1
export PATH="$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH"
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
最重要到-----Hadoop文件配置

創建hdfs文件夾

文件夾不是必須這樣創建,但是,一定要和配置文件對應上。 創建後如下:

/home/hadoop/hadoop-2.9.1/hdfs
/home/hadoop/hadoop-2.9.1/hdfs/tmp
/home/hadoop/hadoop-2.9.1/hdfs/name
/home/hadoop/hadoop-2.9.1/hdfs/data
進入配置目錄

cd /home/hadoop/hadoop-2.9.1/etc/hadoop
配置core-site.xml

在<configuration></configuration>中加入

<property>
   <name>hadoop.tmp.dir</name>
   <value>/home/hadoop/hadoop-2.9.1/hdfs/tmpp</value>
   <description>A base for other temporary directories.</description>
 </property>
 <property>
  <name>io.file.buffer.size</name>
   <value>131072</value>
 </property>
 <property>
   <name>fs.defaultFS</name>
   <value>hdfs://namenode93:9000</value>
 </property>

註意:hadoop.tmp.dir的value和我們之前創建的/home/hadoop/hadoop-2.9.1/hdfs/tmp路徑要一致

配置 hadoop-env.sh文件

將JAVA_HOME文件配置為本機JAVA_HOME路徑

export JAVA_HOME=/home/hadoop/jdk1.8.0_191
配配置 yarn-env.sh

將其中的JAVA_HOME修改為本機JAVA_HOME路徑

export JAVA_HOME=/home/hadoop/jdk1.8.0_191
配置hdfs-site.xml

在<configuration></configuration>中加入

<property>
 <name>dfs.replication</name>
   <value>2</value>
 </property>
 <property>
   <name>dfs.namenode.name.dir</name>
   <value>file:/home/hadoop/hadoop-2.9.1/hdfs/name</value>
   <final>true</final>
</property>
 <property>
   <name>dfs.datanode.data.dir</name>
   <value>file:/home/hadoop/hadoop-2.9.1/hdfs/data</value>
   <final>true</final>
 </property>
 <property>
  <name>dfs.namenode.secondary.http-address</name>
   <value>namenode93:9001</value>
 </property>
 <property>
   <name>dfs.webhdfs.enabled</name>
   <value>true</value>
 </property>
 <property>
   <name>dfs.permissions</name>
   <value>false</value>
 </property>

註意:dfs.namenode.name.dir和dfs.datanode.data.dir的value和之前創建的/hdfs/name和/hdfs/data路徑一致

配置mapred-site.xml

復制mapred-site.xml.template文件,並命名為mapred-site.xml

cp mapred-site.xml.template mapred-site.xml
配置 mapred-site.xml,在標簽<configuration>中添加

 <property>
   <name>mapreduce.framework.name</name>
   <value>yarn</value>
 </property>

配置yarn-site.xml

在<configuration>標簽中添加以

<property>
 <name>yarn.resourcemanager.address</name>
   <valu>namenode93:18040</value>
 </property>
 <property>
   <name>yarn.resourcemanager.scheduler.address</name>
   <value>namenode93:18030</value>
 </property>
 <property>
   <name>yarn.resourcemanager.webapp.address</name>
   <value>namenode93:18088</value>
 </property>
 <property>
   <name>yarn.resourcemanager.resource-tracker.address</name>
   <value>namenode93:18025</value>
 </property>
 <property>
   <name>yarn.resourcemanager.admin.address</name>
   <value>namenode93:18141</value>
 </property>
 <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
 </property>
 <property>
     <name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
     <value>org.apache.hadoop.mapred.ShuffleHandler</value>
 </property>

配置slaves 文件

把原本的localhost刪掉,改為

namenode93
datanode129
datanode130
將hadoop-2.9.1文件夾傳到其他虛擬機上

scp -r hadoop-2.9.1 hadoop@datanode129:~/
scp -r hadoop-2.9.1 hadoop@datanode130:~/
註意:hadoop是虛擬機的用戶名,

初始化hadoop 在namenode機器上

hdfs namenode -format

啟動Hadoop

start-dfs.sh
start-yarn.sh
或者

start-all.sh
停止Hadoop

stop-yarn.sh
stop-dfs.sh
或者

stop-all.sh
查看命令

可以查看到當前登錄機器到角色

jps
jps查詢結果如下

hadoop@namenode93:~> jps
15314 SecondaryNameNode
15484 ResourceManager
14956 NameNode
15116 DataNode
15612 NodeManager
16781 Jps

129 130兩個機器是 DataNode,在Hadoop到配置裏,可以靈活配置各個機器角色 詳細到配置官網上有 jps查詢結果如下

hadoop@datanode130:~> jps
10233 NodeManager
10365 Jps
10110 DataNode
到這裏,三臺機器搭建的Hadoop集群就組建完畢了。

用自帶的樣例測試hadoop集群跑任務

使用命令

hadoop jar /home/hadoop/hadoop-2.9.1/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.9.1.jar pi 10 10
用來求圓周率,pi是類名,第一個10表示Map次數,第二個10表示隨機生成點的次數

最後出現結果

Job Finished in 32.014 seconds
Estimated value of Pi is 3.20000000000000000000
ok,集群測試可用。 網上還有測試統計字數到例子,有興趣可以嘗試一下

HDFS管理界面

http://10.96.91.93:50070/

yarn管理界面

http://10.96.91.93:18088/

其他suse命令

查看版本

lsb_release -d
SUSE11下: 關閉防

service SuSEfirewall2_setup stop
service SuSEfirewall2_init stop
取消開機啟動防火墻:

chkconfig SuSEfirewall2_setup off
chkconfig SuSEfirewall2_init off
查看端口情況

netstat -ntpl
參考資料

CentOs6搭建Hadoop環境,這是一個網上比較好的例子。尤其是Hadoop HA安裝這部分比較全面。
Hadoop配置文件參數詳解,這個只是參考,Hadoop版本不一樣可能使用到配置也有一些差別。具體查看項目對應版本的配置部分文檔。
Apache Hadoop 2.9.1項目

hadoop 集群搭建-suse linux 11