Apache Hadoop集羣搭建

集羣Linux環境搭建

組件版本

  • centOS 7.6
  • jdk 1.8
  • zookeeper 3.4.9
  • Hadoop 2.7.5
  • mysql 驅動 mysql-connector-java-5.1.38.jar
  • hive 2.1.1
  • sqoop
  • kafka2.11
  • Hbase1.4.9
  • Sqoop1.4.6
  • Kylin2.4

注意事項

  • windows系統確認全部的關於VmWare的服務都已經啓動(五個)
  • 確認好VmWare生成的網關地址:192.168.64.2

  • 確認VmNet8網卡已經配置好了IP地址和DNS

複製虛擬機

  1. VMWare中新建虛擬機,按步驟操做便可
  2. 這裏選擇課程給的虛擬機
  • 複製三份,並將文件夾分別重命名爲node01,node02,node03
  • 雙擊.vmx文件,則在VmWare中打開,並根據相應文件夾重命名
  • 在虛擬機中進行配置三臺虛擬機的內存(任務管理器-性能-本機內存爲8G),所以每臺虛擬機內存分配不能超過2G。設置1G
  • 分配最大可佔用的磁盤空間,這裏40G
  • 配置ISO映像文件正確路徑(CentOS 64)

虛擬機修改Mac和IP

網絡上解決步驟各異,其實就一句話。只要保證vm virtual machine的.vmx配置文件、ifconfig –a、/etc/sysconfig/network-scripts/ifcfg-eth0、/etc/udev/rules.d/70-persistent-net.rules,所使用的網卡設備和MAC地址一致便可。
  • 配置參數列表
IP 主機名 環境配置 安裝
192.168.64.100 node01 關閉防火牆和SELinux,host映射,時鐘同步 JDK,NameNode,ResourceManager,Zookeeper
192.168.64.110 node02 關閉防火牆和SELinux,host映射,時鐘同步 JDK,NameNode,ResourceManager,Zookeeper
192.168.64.120 node03 關閉防火牆和SELinux,host映射,時鐘同步 JDK,NameNode,ResourceManager,Zookeeper,mysql
  • 打開虛擬機
    點擊三臺虛擬機,選擇(CTRL+ALT可在虛擬機和主機間進行切換):我已複製該虛擬機。輸入 root 123456,打開
  • 每臺虛擬機更換MAC地址
    打開三臺虛擬機設置,查看NAT地址(若相同,則要生成新的)
    00:0C:29:3A:F7:FA
    00:0C:29:90:5D:AC
    00:0C:29:2C:53:90
vim /etc/udev/rules.d/70-persistent-net.rules

三臺機器設置成相應的MAC地址,併網卡均設置爲eth0
html

  • 每臺虛擬機更改IP地址
vim /etc/sysconfig/network-scripts/ifcfg-eth0
改成相應的MAC地址
ONBOOT改成yes:啓動時會激活網卡
BOOTROTO設置爲static,表示靜態IP
配置具體IP參數

* 輸入 **reboot 重啓**三臺主機
* 登陸後,輸入 ifconfig,查看ip是否正確
* 輸入 ping www.baidu.com 查看可否正確聯網,CTRL+C結束終止進程
  • 每臺虛擬機修改對應主機名
vim /etc/sysconfig/network
HOSTNAME=node01
  • 每臺虛擬機,設置ip和域名映射
打開後,增長圖片上的語句
vim /etc/hosts


輸入 reboot 重啓三臺主機java

虛擬機關閉防火牆和SELinux

  • 使用遠程登陸工具(secureCRT)
  • 三臺機器執行如下命令(root用戶來執行),來關閉防火牆
service iptables stop   #關閉防火牆
chkconfig iptables off  #禁止開機啓動
  • SELinux 是Linux的一種安全子系統(三種工做模式)
    - 強制模式:違反規則,則制止,並記錄到日誌文件
    - 寬容模式:違反規則,不制止,記錄到日誌文件
    - 關閉
# 修改selinux的配置文件
vi /etc/selinux/config
# 將其中的模式改成:
SELINUX=disabled

虛擬機免密碼登陸

  • 爲何要免密登陸
    Hadoop 節點衆多, 因此通常在主節點啓動從節點, 這個時候就須要程序自動在主節點登陸到從節點中, 若是不能免密就每次都要輸入密碼, 很是麻煩
  • 第一步:在三臺機器執行如下命令,生成公鑰與私鑰(按enter 3次)
ssh-keygen -t rsa
  • 第二步:拷貝公鑰到同一臺機器
三臺機器將拷貝公鑰到第一臺機器,三臺機器執行命令:
ssh-copy-id node01
  • 第三步: 複製第一臺機器的認證到其餘機器
在第一臺機器上面執行如下命令

scp /root/.ssh/authorized_keys node02:/root/.ssh
scp /root/.ssh/authorized_keys node03:/root/.ssh

三臺機器時鐘同步

# 安裝
yum install -y ntp
# 啓動定時任務
crontab -e
# 隨後在輸入界面鍵入,使其和阿里雲服務器保持時鐘同步
*/1 * * * * /usr/sbin/ntpdate ntp4.aliyun.com;

輔助軟件安裝

三臺機器安裝jdk

SecureCRT View-Command Window,後右擊,選擇 send command to all sessionsnode

  • 查看自帶的openjdk並卸載
rpm -qa | grep java
rpm -e java-1.6.0-openjdk-1.6.0.41-1.13.13.1.el6_8.x86_64 tzdata-java-2016j-1.el6.noarch java-1.7.0-openjdk-1.7.0.131-2.6.9.0.el6_8.x86_64 --nodeps
  • 建立安裝目錄
mkdir -p /export/softwares  #軟件包存放目錄
mkdir -p /export/servers    #安裝目錄
  • 上傳並 解壓
# 安裝傳輸工具
yum -y install lrzsz
** 出現 rpm庫校驗失敗或者損壞 錯誤 
** 解決以下
yum clean all
yum makecache
#上傳jdk到/export/softwares路徑下去,並解壓
tar -zxvf jdk-8u261-linux-x64.tar.gz -C ../servers/
  • 配置環境變量
vim /etc/profile
# 添加以下內容
export JAVA_HOME=/export/servers/jdk1.8.0_261
export PATH=:$JAVA_HOME/bin:$PATH
# 修改完成以後記得
source /etc/profile
# 使用命令查看是否安裝成功
java -version
# 可每臺進行相同配置,也可直接拷貝發送,再進行環境變量配置
scp -r jdk1.8.0_261/ node02:$PWD
scp -r jdk1.8.0_261/ node03:$PWD

mysql的安裝

  • 第一步:在線安裝mysql相關的軟件包
yum  install  mysql  mysql-server  mysql-devel
  • 第二步:啓動mysql的服務
/etc/init.d/mysqld start
  • 第三步:經過mysql安裝自帶腳本進行設置
/usr/bin/mysql_secure_installation
遠程登陸及權限表選擇  n
  • 第四步:進入mysql的客戶端而後進行受權
# 在linux上進入客戶端
mysql -u root -p
# 受權語句
grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
# 刷新MySQL的系統權限相關表
flush privileges;
# 退出
exit;

zookeeper安裝

zookeeper 3.4.9mysql

# 安裝包下載
# 上傳 zookeeper-3.4.9.tar.gz 至 /export/softwares

# 解壓至 /export/servers
tar -zxvf zookeeper-3.4.9.tar.gz -C ../servers/

# 修改配置文件
cd /export/servers/zookeeper-3.4.9/conf/
cp zoo_sample.cfg zoo.cfg
mkdir -p /export/servers/zookeeper-3.4.9/zkdatas/
# 修改相應參數
vim zoo.cfg

dataDir=/export/servers/zookeeper-3.4.9/zkdatas
# 保留多少個快照
autopurge.snapRetainCount=3
# 日誌多少小時清理一次
autopurge.purgeInterval=1
# 集羣中服務器地址
server.1=node01:2888:3888
server.2=node02:2888:3888
server.3=node03:2888:3888

# 添加myid配置

# 進入目錄,打開myid,輸入 1,保存退出
cd /export/servers/zookeeper-3.4.9/zkdatas
vim myid
# 安裝包分發並修改 myid 值爲 2  3
scp -r /export/servers/zookeeper-3.4.9/ node02:/export/servers/
或者
scp -r /export/servers/zookeeper-3.4.9/ node02:$PWD

scp -r /export/servers/zookeeper-3.4.9/ node03:/export/servers/
# 啓動ZK服務
/export/servers/zookeeper-3.4.9/bin/zkServer.sh start
# 查看啓動狀態
cd /export/servers/zookeeper-3.4.9/bin
zkServer.sh status

Hadoop 安裝

服務器IP 192.168.64.100 192.168.64.110 192.168.64.120
NameNode
SecondaryNameNode
dataNode
ResourceManager
NodeManager
- NameNode:HDFS 主節點
- SecondaryNameNode 對NameNode 作輔助管理
- dataNode :HDFS從節點,三臺都進行安裝
- ResourceManager: 分佈式計算主節點
- NodeManager : 分佈式計算從節點
# 對Hadoop安裝包進行編譯,使其支持snappy壓縮等
[編譯後安裝包](https://pan.baidu.com/s/1BFQq-qWJOGkB75StVbV_Tw)
提取碼:hz4s

# 上傳並解壓 Hadoop2.7.5至 servers目錄下,檢測本地庫
cd hadoop-2.7.5
bin/hadoop checknative

  • 修改配置文件(NotePad++ 打開NppFTP窗口,鏈接服務器,進行操做
# 修改 core-site.xml
<configuration>
	<!--  指定集羣的文件系統類型:分佈式文件系統 -->
	<property>
		<name>fs.default.name</name>
		<value>hdfs://node01:8020</value>
	</property>
	<!--  指定臨時文件存儲目錄 -->
	<property>
		<name>hadoop.tmp.dir</name>
		<value>/export/servers/hadoop-2.7.5/hadoopDatas/tempDatas</value>
	</property>
	<!--  緩衝區大小,實際工做中根據服務器性能動態調整 -->
	<property>
		<name>io.file.buffer.size</name>
		<value>4096</value>
	</property>

	<!--  開啓hdfs的垃圾桶機制,刪除掉的數據能夠從垃圾桶中回收,單位分鐘 -->
	<property>
		<name>fs.trash.interval</name>
		<value>10080</value>
	</property>
</configuration>
# 修改 hdfs-site.xml
<configuration>

	 <property>
			<name>dfs.namenode.secondary.http-address</name>
			<value>node01:50090</value>
	</property>

	<!-- 指定namenode的訪問地址和端口 -->
	<property>
		<name>dfs.namenode.http-address</name>
		<value>node01:50070</value>
	</property>
	<!-- 指定namenode元數據的存放位置 -->
	<property>
		<name>dfs.namenode.name.dir</name>
		<value>file:///export/servers/hadoop-2.7.5/hadoopDatas/namenodeDatas,file:///export/servers/hadoop-2.7.5/hadoopDatas/namenodeDatas2</value>
	</property>
	<!--  定義dataNode數據存儲的節點位置,實際工做中,通常先肯定磁盤的掛載目錄,而後多個目錄用,進行分割  -->
	<property>
		<name>dfs.datanode.data.dir</name>
		<value>file:///export/servers/hadoop-2.7.5/hadoopDatas/datanodeDatas,file:///export/servers/hadoop-2.7.5/hadoopDatas/datanodeDatas2</value>
	</property>
	
	<!-- 指定namenode日誌文件的存放目錄 -->
	<property>
		<name>dfs.namenode.edits.dir</name>
		<value>file:///export/servers/hadoop-2.7.5/hadoopDatas/nn/edits</value>
	</property>
	

	<property>
		<name>dfs.namenode.checkpoint.dir</name>
		<value>file:///export/servers/hadoop-2.7.5/hadoopDatas/snn/name</value>
	</property>
	<property>
		<name>dfs.namenode.checkpoint.edits.dir</name>
		<value>file:///export/servers/hadoop-2.7.5/hadoopDatas/dfs/snn/edits</value>
	</property>
	<!-- 文件切片的副本個數-->
	<property>
		<name>dfs.replication</name>
		<value>3</value>
	</property>

	<!-- 設置HDFS的文件權限-->
	<property>
		<name>dfs.permissions</name>
		<value>false</value>
	</property>

	<!-- 設置一個文件切片的大小:128M-->
	<property>
		<name>dfs.blocksize</name>
		<value>134217728</value>
	</property>
</configuration>
# 修改 hadoop-env.sh (僅修改下面這一句)
export JAVA_HOME=/export/servers/jdk1.8.0_261
# 修改 mapred-site.xml
mapred-site.xml.template 重命名爲 mapred-site.xml

<configuration>
	<!-- 指定分佈式計算使用的框架是yarn -->
	<property>
			<name>mapreduce.framework.name</name>
			<value>yarn</value>
	</property>

	<!-- 開啓MapReduce小任務模式 -->
	<property>
		<name>mapreduce.job.ubertask.enable</name>
		<value>true</value>
	</property>
	
	<!-- 設置歷史任務的主機和端口 -->
	<property>
		<name>mapreduce.jobhistory.address</name>
		<value>node01:10020</value>
	</property>

	<!-- 設置網頁訪問歷史任務的主機和端口 -->
	<property>
		<name>mapreduce.jobhistory.webapp.address</name>
		<value>node01:19888</value>
	</property>
</configuration>
# 修改 yarn-site.xml
<configuration>
	<!-- 配置yarn主節點的位置 -->
	<property>
		<name>yarn.resourcemanager.hostname</name>
		<value>node01</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>
	<!-- 設置聚合日誌在hdfs上的保存時間 -->
	<property>
		<name>yarn.log-aggregation.retain-seconds</name>
		<value>604800</value>
	</property>
	<!-- 設置yarn集羣的內存分配方案 -->
	<property>    
		<name>yarn.nodemanager.resource.memory-mb</name>    
		<value>20480</value>
	</property>

	<property>  
        	 <name>yarn.scheduler.minimum-allocation-mb</name>
         	<value>2048</value>
	</property>
	<property>
		<name>yarn.nodemanager.vmem-pmem-ratio</name>
		<value>2.1</value>
	</property>

</configuration>
# 修改 mapred-env.sh 
增長一句:export JAVA_HOME=/export/servers/jdk1.8.0_261
# 修改slaves

node01
node02
node03
# 執行建立服務數據保存目錄
mkdir -p /export/servers/hadoop-2.7.5/hadoopDatas/tempDatas
mkdir -p /export/servers/hadoop-2.7.5/hadoopDatas/namenodeDatas
mkdir -p /export/servers/hadoop-2.7.5/hadoopDatas/namenodeDatas2
mkdir -p /export/servers/hadoop-2.7.5/hadoopDatas/datanodeDatas
mkdir -p /export/servers/hadoop-2.7.5/hadoopDatas/datanodeDatas2
mkdir -p /export/servers/hadoop-2.7.5/hadoopDatas/nn/edits
mkdir -p /export/servers/hadoop-2.7.5/hadoopDatas/snn/name
mkdir -p /export/servers/hadoop-2.7.5/hadoopDatas/dfs/snn/edits
# Hadoop安裝包分發
cd /export/servers/
scp -r hadoop-2.7.5 node02:$PWD
scp -r hadoop-2.7.5 node03:$PWD
# 配置Hadoop環境變量(三臺)
vim /etc/profile

# 添加
export HADOOP_HOME=/export/servers/hadoop-2.7.5
export PATH=:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

# 配置生效
source /etc/profile

# 集羣啓動
cd /export/servers/hadoop-2.7.5/
bin/hdfs namenode -format
sbin/start-dfs.sh
sbin/start-yarn.sh
sbin/mr-jobhistory-daemon.sh start historyserver

# 三個端口查看界面
http://node01:50070/explorer.html#/   查看hdfs
http://node01:8088/cluster            查看yarn集羣
http://node01:19888/jobhistory        查看歷史完成的任務

hive安裝(node03)

# 上傳
cd /export/softwares
# 解壓至 /export/servers
tar -zxvf apache-hive-2.1.1-bin.tar.gz -C ../servers/

修改hive的配置文件

# 修改 hive-env.sh
cd /export/servers/apache-hive-2.1.1-bin/conf
cp hive-env.sh.template hive-env.sh
 vim hive-env.sh
# 去掉下面兩句的註釋,並添加相應路徑
HADOOP_HOME=/export/servers/hadoop-2.7.5
export HIVE_CONF_DIR=/export/servers/apache-hive-2.1.1-bin/conf

#  新建 hive-site.xml
vim hive-site.xml

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
      <name>javax.jdo.option.ConnectionUserName</name>
      <value>root</value>
  </property>
  <property>
      <name>javax.jdo.option.ConnectionPassword</name>
      <value>123456</value>
  </property>
  <property>
      <name>javax.jdo.option.ConnectionURL</name>
      <value>jdbc:mysql://node03:3306/hive?createDatabaseIfNotExist=true&amp;useSSL=false</value>
  </property>
  <property>
      <name>javax.jdo.option.ConnectionDriverName</name>
      <value>com.mysql.jdbc.Driver</value>
  </property>
  <property>
      <name>hive.metastore.schema.verification</name>
      <value>false</value>
  </property>
  <property>
    <name>datanucleus.schema.autoCreateAll</name>
    <value>true</value>
 </property>
 <property>
		<name>hive.server2.thrift.bind.host</name>
		<value>node03</value>
   </property>
</configuration>

# 添加mysql的鏈接驅動包 到hive 的lib目錄
cd /export/servers/apache-hive-2.1.1-bin/lib
# 配置 hive 的環境變量
sudo vim /etc/profile

export HIVE_HOME=/export/servers/apache-hive-2.1.1-bin
export PATH=:$HIVE_HOME/bin:$PATH

source /etc/profile

hive 進入方式

1. bin/hive
2.bin/hive -e "create database if not exists mytest;"
- 或者將hql語句寫到文本中,再執行
- vim hive.sql
- 寫入sql語句
- 執行
bin/hive -f /export/servers/hive.sql

使用 beeline 工具鏈接hive

# 修改 hadoop(第三臺) 的 hdf-site.xml文件
cd /export/servers/hadoop-2.7.5/etc/hadoop
<property>
      <name>dfs.webhdfs.enabled</name>
      <value>true</value>
</property>
# 修改 core-site.xml
vim core-site.xml
# 添加
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>

# 將第三臺機子上修改的兩個配置文件分發給其餘兩臺主機
scp hdfs-site.xml node02:$PWD
scp hdfs-site.xml node03:$PWD

scp core-site.xml node02:$PWD
scp core-site.xml node01:$PWD

# 重啓集羣
sbin/start-dfs.sh
sbin/start-yarn.sh
 # 啓動beeline
nohup bin/hive --service hiveserver2 > /dev/null 2>&1 &
# beeline 鏈接 hiveserver2

bin/beeline
!connect  to jdbc:hive2://node03:10000

sqoop 安裝(在第三臺機器上)

sqoop 操做與安裝linux

kafka 安裝(三臺機器)

[kafka 操做與安裝](https://www.cnblogs.com/alidata/p/13424939.html)web

HBase

[HBase 操做與安裝]()sql

相關文章
相關標籤/搜索