Hadoop 3.+ CentOS 7 下安裝步驟

純命令行環境, 虛擬機配置集群

  1. 本機環境
    windows 10


    image.png
  2. 集群配置:master + slave1 + slave2, 三臺機器均為 1核心 2GB 內存 20GB硬盤, master 可以配置小內存點,slave是工作節點需要大點

準備

  1. 新建虛擬機, 最低配置 1核心 2GB 內存 20GB硬盤
  2. 安裝 Cento OS7系統, 選擇 '最簡安裝' 降低系統負擔;給root用戶設密碼

本文只討論單root用戶的情況,所以沒有任何權限的問題(實際上這是不安全的

  1. 修改主機名
# hostname // 查看當前主機
localhost.admin
# hostname master // 修改主機名為master
# exit // 登出
  1. 重新登入
  2. 聯網
    5.1 通過ifconfig 確定虛擬機的網卡, ens33 (lo 是本地回環)


    image.png

    5.2 鍵入命令

# vi /etc/sysconfig/network-scripts/ifcfg-ens33    // 取決于自己的網卡
設置 ONBOOT=yes
# service network restart
  1. 通過pscp軟件把JDK和Hadoop的壓縮包傳入, 解壓, 配置JDK(略)

Master 安裝Hadoop

  1. 創建一些目錄供 Hadoop 程序使用。可能變的很大,最好選一些分配磁盤空間較多的掛載點下的路徑
mkdir -p /root/hadoop/tmp  
mkdir -p /root/hadoop/var  
mkdir -p /root/hadoop/dfs/name  
mkdir -p /root/hadoop/dfs/data
  1. 改 $HADOOP_HOME/etc/hadoop/ 中的幾個配置文件. 相關配置具體含義及作用不屬于本文討論范圍, 請參考其它相關文檔。

2.1 core-site.xml // Hadoop整體的一些參數配置

<property>
     <name>hadoop.tmp.dir</name>
     <value>/usr/local/hadoop-3.1.2/tmp</value>
</property>
<property>
     <name>fs.default.name</name>
     <value>hdfs://test-1:9000</value>
</property>

2.2 hdfs-site.xml // HDFS模塊的配置

<property>
    <name>dfs.name.dir</name>
    <value>/usr/local/hadoop-3.1.2/dfs/name</value>
</property>
<property>
    <name>dfs.data.dir</name>
    <value>/usr/local/hadoop-3.1.2/dfs/data</value>
</property>
<property>
    <name>dfs.replication</name>
    <value>2</value>
</property>
<property>
    <name>dfs.permissions</name>
    <value>false</value>
</property>

2.3 mapred-site.xml // MapReduce模塊的配置
假設我的Hadoop 路徑是 /usr/local/hadoop-3.0.0-beta1, 下同

<property>
    <name>mapred.job.tracker</name>
    <value>test-1:49001</value>
</property>
<property>
     <name>mapred.local.dir</name>
     <value>/usr/local/hadoop-3.1.2/var</value>
</property>
<property>
     <name>mapreduce.framework.name</name>
     <value>yarn</value>
</property>
<property>
     <name>yarn.app.mapreduce.am.env</name>
     <value>/usr/local/hadoop-3.1.2</value>
</property>
<property>
     <name>mapreduce.map.env</name>
     <value>/usr/local/hadoop-3.1.2</value>
</property>
<property>
     <name>mapreduce.reduce.env</name>
     <value>/usr/local/hadoop-3.1.2</value>
</property>
<property>
  <name>yarn.app.mapreduce.am.env</name>
  <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property>
  <name>mapreduce.map.env</name>
  <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property>
  <name>mapreduce.reduce.env</name>
  <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>

2.4 yarn-site.xml // YARN模塊的配置, 很重要, 稍微不注意就跑不起來。比如說內存,最簡單的 wordcount 都需要超過 1GB 內存,所以低于了就跑不了。具體請參考 YARN中內存和CPU兩種資源的調度和隔離

<property>
        <name>yarn.resourcemanager.hostname</name>
        <value>test-1</value>
   </property>
   <property>
        <description>The address of the applications manager interface in the RM.</description>
        <name>yarn.resourcemanager.address</name>
        <value>${yarn.resourcemanager.hostname}:8032</value>
   </property>
   <property>
        <description>The address of the scheduler interface.</description>
        <name>yarn.resourcemanager.scheduler.address</name>
        <value>${yarn.resourcemanager.hostname}:8030</value>
   </property>
   <property>
        <description>The http address of the RM web application.</description>
        <name>yarn.resourcemanager.webapp.address</name>
        <value>${yarn.resourcemanager.hostname}:8088</value>
   </property>
   <property>
        <description>The https adddress of the RM web application.</description>
        <name>yarn.resourcemanager.webapp.https.address</name>
        <value>${yarn.resourcemanager.hostname}:8090</value>
   </property>
   <property>
        <name>yarn.resourcemanager.resource-tracker.address</name>
        <value>${yarn.resourcemanager.hostname}:8031</value>
   </property>
   <property>
        <description>The address of the RM admin interface.</description>
        <name>yarn.resourcemanager.admin.address</name>
        <value>${yarn.resourcemanager.hostname}:8033</value>
   </property>
   <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
   </property>
 <property>
        <name>yarn.log-aggregation-enable</name>
        <value>true</value>
   </property>
<property>
        <name>yarn.nodemanager.vmem-check-enabled</name>
        <value>false</value>
   </property>
   <property>
        <name>yarn.nodemanager.resource.memory-mb</name>
        <value>2048</value>
   </property>
   <property>
        <name>yarn.nodemanager.resource.cpu-vcores</name>
        <value>1</value>
   </property>
   <property>
        <name>yarn.nodemanager.vmem-check-enabled</name>
        <value>false</value>
   </property>

2.5 hadoop-env.sh

補一行
export JAVA_HOME=YOUR_JAVA_HOME_PATH

2.6 works // 工作節點配置
將里面的localhost刪除, 改為

test-2
test-3

2.7 sbin/start-dfs.sh sbin/stop-dfs.sh
在空白位置補

HDFS_DATANODE_USER=root
HDFS_DATANODE_SECURE_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

2.8 sbin/start-yarn.sh sbin/stop-yarn.sh
在空白位置補

YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
  1. 執行命令
在 namenode 上執行 hdfs namenode -format
然后進入 sbin 目錄下
./start-all.sh

正常的話,根據配置文件不同,可能細微差別
NameNode 是 MR 的 master 節點,DataNode 是 worker;NodeManager 是 YARN 在工作節點上的,ResourceManger 是主節點。


image.png

HDFS的管理介面, YARN 的管理介面

可以根據跑 demo 然后看報不報錯,報什么錯再改。

  1. 配置靜態ip

3.1 在VMware 的虛擬網絡編輯器中 查看


image.png

3.2 # vi /etc/sysconfig/network-scripts/ifcfg-ens33 // 取決于自己的網卡

// 重點
BOOTPROTO=static //取消DHCP
IPADDR=192.168.209.130 //任意指定IPV4地址, 但要在子網內
GATEWAY=192.168.209.2 //輸入在 3.1中看見的
NETMASK=255.255.255.0 //輸入在 3.1中看見的
DNS1=223.5.5.5 //阿里DNS
DNS2=223.6.6.6 //阿里DNS

最終如下


image.png

輸入ifconfig 查看是否成功修改

  1. 配置環境變量 #vi /etc/profile


    image.png

    不要忘了 source /etc/profile

Slave

  1. 克隆兩臺虛擬機, 完整克隆, 打開
  2. [Slave兩臺都要]修改hostname
  3. [Slave兩臺都要]修改自己的IP
  4. [Slave兩臺都要], # vi /etc/hosts
    image.png

配置免密ssh

  1. [Master, Slave1, Slave2]
ssh-keygen  -t   rsa   -P  '' //敲回車就行, 保證公匙一致
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys // 把自己的公匙寫入authorized_keys
  1. [Master, Slave1, Slave2]
    互相拷貝
// master
ssh-copy-id root@slave1
ssh-copy-id root@slave2 
// slave1
ssh-copy-id root@master
ssh-copy-id root@slave2 
// slave2
ssh-copy-id root@master
ssh-copy-id root@slave1
  1. 測試均免密通過才算配置正確, 否則一定要檢查原因并排除
ssh root@localhost
ssh root@other_server 

啟動

[Master]

hdfs namenode -format
/usr/local/hadoop-3.0.0.beta1/sbin/start-all.sh 

WEB管理界面


image.png

可能問題

  1. 防火墻沒關
systemctl stop firewalld.service
systemctl disable firewalld
  1. SELinux沒關
  2. 執行mapreduce任務報錯
# hadoop classpath // 找到hadoop的classpath
# vi yarn-site.xml
// 在里面補
<property>
    <name>yarn.application.classpath</name>
    <value>XXXX</value>
</property>

參考 http://www.lxweimin.com/p/b49712bbe044

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。