1. 程式人生 > >從零開始搭建hadoop叢集

從零開始搭建hadoop叢集

創作不易,請勿抄襲,轉載請註明出處。如有疑問,請加微信 wx15151889890,謝謝。
[本文連結:]https://blog.csdn.net/wx740851326/article/details/https://blog.csdn.net/wx740851326/article/details/83749163

本文主要記敘瞭如何在centos7.2上搭建cdh平臺,使用mysql為元資料管理庫(官方推薦),安裝了Spark2和Kafka元件。

一、軟體準備

  • cdh5.13.3-centos7.tar.gz cm5.13.3-centos7.tar.gz
    SPARK2_ON_YARN-2.3.0.cloudera3.jar
    SPARK2-2.3.0.cloudera3-1.cdh5.13.3.p0.458809-el7.parcel
    CDH-5.13.3-1.cdh5.13.3.p0.2-el7.parcel
    KAFKA-3.1.0-1.3.1.0.p0.35.parcel
    SPARK2-2.3.0.cloudera3-1.cdh5.13.3.p0.458809-el7.parcel.sha
    CDH-5.13.3-1.cdh5.13.3.p0.2-el7.parcel.sha
    KAFKA-3.1.0-1.3.1.0.p0.35.parcel.sha JDK:jdk-8u181-linux-x64.tar.gz

二、修改作業系統配置

  1. 關閉selinux

vi /etc/selinux/configvi /etc/selinux/config
將SELINUX=enforcing改為SELINUX=disabled

  1. 關閉防火牆
    systemctl stop firewalld
    systemctl disable firewalld
    service iptables stop
    chkconfig iptables off

  2. 安裝必須的yum包
    yum -y install postgresql-server
    yum -y install postgresql
    yum -y install httpd
    yum -y install perl
    yum -y install bind-utils
    yum -y install libxslt
    yum -y install cyrus-sasl-gssapi
    yum -y install redhat-lsb
    yum -y install cyrus-sasl-plain
    yum -y install portmap
    yum -y install fuse
    yum -y install fuse-libs
    yum -y install nc
    yum -y install python-setuptools
    yum -y install python-psycopg2
    yum -y install MySQL-python
    yum -y install mod_ssl
    yum -y install ssh
    yum -y install ntp
    yum -y install wget

  3. 移除自帶的openjdk

    rpm -qa |grep jdk
    yum -y remove 《》 #移除包

  4. 移除自帶的mariadb

    rpm -qa |grep mariadb
    yum -y remove 《》 #移除包

  5. 修改hosts檔案

    vi /etc/hosts
    配置主機名ip地址

  6. 設定交換空間為0

    echo “vm.swappiness=0” >> /etc/sysctl.conf
    提升hdfs的讀寫效率

  7. 配置ssh 免密通道

    ssh-keygen -t rsa一鍵回車
    ssh-copy-id -i hadoop01
    ssh-copy-id -i hadoop02
    ssh-copy-id -i hadoop03
    ssh hadoop01
    ssh hadoop02
    ssh hadoop03

  8. 配置ntp伺服器

    vi /etc/ntp.conf
    master上 配置server 127.127.1.0
    slaver上配置 server

  9. 安裝jdk

    將jdk的壓縮包放置在/usr/java/jdk1.8
    tar -zvxf jdk-8u181-linux-x64.tar.gz
    mv jdk1.8.0_181 jdk1.8
    vi /etc/profile 寫入以下指令碼
    export JAVA_HOME=/usr/java/jdk1.8
    export JAVA_HOME=/usr/java/jdk1.8
    export PATH=$JAVA_HOME/bin:$PATH
    export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    完成後source /etc/profile
    javac java –version檢驗安裝情況

  10. 解壓cdh檔案至/var/www/html/下(master)

tar -zvxf cdh5.13.3-centos7.tar.gz
tar -zvxf cm5.13.3-centos7.tar.gz
  1. 配置本地yum源

    vi /etc/yum.repos.d/cm.repo
    [cloudera-manager]
    name=Cloudera Manager
    baseurl= http://hadoop01:/cm/5.13.3/
    gpgcheck = 0
    enabled = 1
    vi /etc/yum.repos.d/cdh.repo
    [cloudera-cdh5]
    name=CDH
    baseurl= http://hadoop01:/cdh/5.13.3/
    enable=1
    gpgcheck = 0

  2. 配置服務開機自啟動

    service ntpd start
    chkonfig ntpd on
    service iptables stop
    chkconfig iptables off
    service httpd start
    chkconfig httpd on

  3. 機器重啟

  4. 檢查ntp,http服務是否啟動成功

  5. 檢查ntp服務是否正常
    ntpq -pntpq -p

三、資料及CDH服務安裝

  1. 安裝mysql,建立相應的資料庫並賦權(master)

    wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
    rpm -ivh mysql-community-release-el7-5.noarch.rpm
    yum install -y mysql-server
    yum install -y mysql-devel
    yum install -y mysql-connector-java
    service mysqld start
    /usr/bin/mysql_secure_installation
    create database cm default character set utf8;
    create user ‘cm’@’%’ identified by ‘123456’;
    grant all privileges on cm.* to ‘cm’@’%’ with grant option; flush privileges;

    create database hive default character set utf8;
    create user ‘hive’@’%’ identified by ‘123456’;
    grant all privileges on hive.* to ‘hive’@’%’;flush privileges;

    create database rm default character set utf8;
    create user ‘rm’@’%’ identified by ‘123456’;
    grant all privileges on rm.* to ‘rm’@’%’;flush privileges;

    create database sentry default character set utf8;
    create user ‘sentry’@’%’ identified by ‘123456’;
    grant all privileges on sentry.* to ‘sentry’@’%’;flush privileges;

    create database oozie default character set utf8;
    create user ‘oozie’@’%’ identified by ‘123456’;
    grant all privileges on oozie.* to ‘oozie’@’%’;flush privileges;

    create database hue default character set utf8;
    create user ‘hue’@’%’ identified by ‘123456’;
    grant all privileges on hue.* to ‘hue’@’%’;flush privileges;

    create database nms default character set utf8;
    create user ‘nms’@’%’ identified by ‘123456’;
    grant all privileges on nms.* to ‘nms’@’%’;flush privileges;

  2. 安裝cm例項和cm-server(master)

    yum install -y cloudera-manager-daemons cloudera-manager-server

指定cm的資料庫

/usr/share/cmf/schema/scm_prepare_database.sh -h 192.168.1.67 mysql cm cm 123456
  1. 啟動server服務 訪問master主機的7180埠地址

    service cloudera-scm-server start
    service cloudera-scm-server status 檢視程序啟動的狀態
    異常則去日誌目錄下檢視
    tail -30f /var/log/cloudera-scm-server/cloudera-scm-server.log
    成功則訪問 10.16.8.67:7180

四、CM安裝CDH

  1. 訪問10.16.8.67:7180
    此時需要資料使用者名稱密碼,使用者名稱是admin,密碼輸入即會為初始密碼。

  2. 頁面1勾選方框同意使用者協議

  3. 頁面2選擇free 點選繼續
    在這裡插入圖片描述

  4. 配置主機地址 輸入主機名稱在這裡插入圖片描述

  5. 全部勾選,繼續
    在這裡插入圖片描述

  6. choose method 選擇 use packages
    version of cdh選擇 cdh5
    select 都選擇 custom repository
    url輸入的是yum配置的地址

  7. 不勾選 install oracle java se… 繼續
    此處為kerber安裝所必須的java安全包,沒有kerberos不需要安裝,有kerberos初次安裝也不要安裝,等環節裝好再啟用kerberos
    在這裡插入圖片描述

  8. 不勾選single… 直接繼續
    在這裡插入圖片描述

  9. root安裝 所有主機接受相同的root密碼 輸入root的密碼 繼續

  10. 等待安裝完成,選擇core with spark
    在這裡插入圖片描述

  11. 角色分配

分配角色 Hdfs角色分配如下:
hdfs角色分配
Hive角色分配如下:
hive角色分配
Hue角色分配入下:
在這裡插入圖片描述
Cloudera Managerment service角色分配如下:
在這裡插入圖片描述
Oozie spark yarn角色分配如下:
在這裡插入圖片描述
Zookeeper角色分配如下:
在這裡插入圖片描述

說明:
主角色由master承擔
所有機器都是datanode
Namenode首次分配在master上,ha之後分配到slave1上
所有機器都安裝zkserver
Gateway的角色在所有主機上都要有
Cdh的監控服務安裝到master
  1. 繼續
    指定元資料管理庫
    在這裡插入圖片描述
    在這裡插入圖片描述
    在這裡插入圖片描述

五、安裝spark,kafka

  1. 將parcel檔案都放在master主機的/opt/cloudera/parcel-repo下(.torrent檔案會自動生成,不用管)
    在這裡插入圖片描述
  2. 將SPARK2_ON_YARN-2.3.0.cloudera3.jar檔案放在master主機的/opt/cloudera/csd下
  3. 在cdh的parcel包管理介面重新整理,依次分配和啟用CDH5,kafka,Spark2(必須先啟用CDH5)
    在這裡插入圖片描述
  4. 在各主機配置內修改java_home為/usr/java/jdk1.8(因為spark2需要jdk1.8支援,cdh自帶的為1.7)
    在這裡插入圖片描述
    在這裡插入圖片描述
  5. 重新部署配置,然後重啟(啟用或者配置修改後都需如此操作)
    在這裡插入圖片描述
  6. 重啟服務

重啟服務才能看到Spark2服務

service cloudera-scm-server restart
service cloudera-scm-agent restart
  1. 重啟完成後重新登入http://master:7180
  2. 新增kafka服務
    在這裡插入圖片描述

在這裡插入圖片描述

第一次可能會啟動失敗,失敗後直接在首頁點選kafka的小扳手檢視原因,點選配置修改配置,再次啟動kafka

在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
修改完成後,若啟動失敗,則去檢視日誌,很有可能是id問題:
在這裡插入圖片描述
檢視角色日誌報錯:kafka.common.InconsistentBrokerIdException: Configured broker.id 33 doesn’t match stored broker.id 59 in meta.properties
解決辦法:需把配置裡的引數改為59,再啟動
在這裡插入圖片描述

9.新增spark2服務
分配角色
在這裡插入圖片描述
在這裡插入圖片描述

至此,我們的安裝就都已經完成啦。

六、安裝測試

  1. 測試spark服務
    /var/lib/hadoop-hdfs下建立data檔案,內寫入’1\n2\n3’
    檔案上傳至hdfs
    cd /var/lib/hadoop-hdfs
    hadoop fs -put data /user/spark/
    啟動spark2-shell進入命令列
    su hdfs
    spark2-shell
    val lines = sc.textFile("/user/spark/data")
    lines.count
    lines.first
    能夠執行即可,若獲取不到資源,可修改下配置:

    修改yarn的配置
    scheduler.maximum-allocation-mb、
    nodemanager.resource.memory-mb
    改為8GB

  2. 測試kafka服務
    使用命令建立topic
    kafka-topics --create --zookeeper hadoop01,hadoop02 --replication-factor 1 --partitions 1 --topic test
    檢視top是否建立成功
    kafka-topics --list --zookeeper hadoop01,hadoop02

  3. 最後檢驗機器服務
    執行jps,看是否和如下圖所示一致
    在這裡插入圖片描述
    其中DFSZFailoverController是我在做了ha之後才有的服務,無需關注,至於如何配置HA,請參考我的其他文章,謝謝。