0. 寫在前面
0.1 軟件版本
hadoop2.10.2
ubuntu20.04
openjdk-8-jdk
0.2 hadoop介紹
Hadoop是一個由Apache基金會所開發(fā)的分布式系統(tǒng)基礎架構。用戶可以在不了解分布式底層細節(jié)的情況下,開發(fā)分布式程序。充分利用集群的威力進行高速運算和存儲。Hadoop實現(xiàn)了一個分布式文件系統(tǒng)( Distributed File System),其中一個組件是HDFS(Hadoop Distributed File System)。HDFS有高容錯性的特點,并且設計用來部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)來訪問應用程序的數(shù)據,適合那些有著超大數(shù)據集(large data set)的應用程序。HDFS放寬了(relax)POSIX的要求,可以以流的形式訪問(streaming access)文件系統(tǒng)中的數(shù)據。Hadoop的框架最核心的設計就是:HDFS和MapReduce。HDFS為海量的數(shù)據提供了存儲,而MapReduce則為海量的數(shù)據提供了計算 .—百度詞條hadoop
1. 創(chuàng)建hadoop用戶
lynn@lynn:~$ sudo useradd -m hduser -s /bin/bash # 創(chuàng)建用戶hduser 并指定使用bash終端作為shell
lynn@lynn:~$ cd /home
lynn@lynn:~$ ls
hduser lynn # 代表用戶創(chuàng)建成功
lynn@lynn:~$ sudo passwd hduser # 設置密碼
lynn@lynn:~$ sudo adduser hduser sudo # 為hduser增加管理員權限
Adding user `hduser' to group `sudo' ...
Adding user hduser to group sudo
Done.
# 然后切換用戶登錄
2. 安裝java
注意,已經切換到了hduser用戶,lynn主機下
hduser@lynn:~$ sudo apt-get update # 更新包
# The "unable to lock directory /var/lib/apt/lists/" error on Ubuntu typically occurs when the APT package management system is already running or has crashed.如果出現(xiàn)unable to lock,多數(shù)是因為APT包管理系統(tǒng)正在運行或崩潰,可嘗試重啟
# hduser@lynn:~$ ps aux | grep -i apt # 可使用此命令查看哪些安裝在使用apt,如果有則等待這些安裝完成
# The error in Ubuntu may be displayed below:
# /var/lib/dpkg/lock
# /var/lib/dpkg/lock-frontend
# /var/lib/apt/lists/lock
# /var/cache/apt/archives/lock
# These are lock files, which could prevent two instances of apt or dpkg from using the same files simultaneously.
# This could occur if an installation is needed or did not finish. Just remove the lock files.
# To delete or erase the lock files, use the rm command:
# sudo rm /var/lib/dpkg/lock
# sudo rm /var/lib/apt/lists/lock
# sudo rm /var/cache/apt/archives/lock
hduser@lynn:~$ sudo apt search jdk # 查找jdk包,也可以直接運行下一條命令
# 安裝openjdk-8-jdk版本
hduser@lynn:~$ sudo apt install openjdk-8-jdk
# 安裝完成之后查看一下版本號,確認安裝成功
hduser@lynn:~$ java -version
hduser@lynn:~$ javac -version
hduser@lynn:~$ update-alternatives --display java # 查看已安裝的java版本列表
hduser@lynn:~$ sudo gedit .bashrc # 設置環(huán)境變量
# 在彈出的窗口最后增加如下語句:
# export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/bin/java # 設置Java的運行程序
# export JRE_HOME=$JAVA_HOME/jre
# export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
# export PATH=$PATH:$JAVA_HOME/bin
hduser@lynn:~$ source .bashrc # 使環(huán)境變量生效
3. 安裝hadoop
從清華鏡像源網站下載hadoop2.10.2版本
hduser@lynn:~$ sudo tar -zxvf hadoop-2.10.2.tar.gz
hduser@lynn:~$ sudo mv hadoop-2.10.2 /usr/local/hadoop
hduser@lynn:~$ sudo gedit ~/.bashrc # 設置hadoop環(huán)境變量,如果gedit打開失敗,試試重啟終端
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native:$JAVA_LIBRARY_PATH
hduser@lynn:~$ source ~/.bashrc # 使環(huán)境變量生效
3.0 配置SSH
# 安裝ssh
hduser@lynn:~$ sudo apt-get install ssh
hduser@lynn:~$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
# -t 指定要生成的密鑰類型
# -P 表示密碼,''表示不指定密碼進行連接
# -f 是密鑰生成之后保存的位置
hduser@lynn:~$ cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys # 拷貝公鑰到要進行免密登錄的機器上
hduser@lynn:~$ ssh localhost # 登錄本機
hduser@lynn:~$ ll ~/.ssh # 查看相關文件
3.1 單機偽分布模式
在一臺運行l(wèi)inux的單機上,用偽分布方式,用不同的進程模擬分布運行下的NameNode、DataNode、JobTracker、TaskTracker等各類節(jié)點。
3.1.1 配置hadoop-env
hduser@lynn:~$ sudo gedit /usr/local/hadoop/etc/hadoop/hadoop-env.sh
修改JAVA_HOME:
原來是:export JAVA_HOME=${JAVA_HOME}
修改為:export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd65
3.1.2 配置core-site.xml
設置HDFS的默認名稱
hduser@lynn:~$ sudo gedit /usr/local/hadoop/etc/hadoop/core-site.xml
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
3.1.3 設置yarn-site.xml
hduser@lynn:~$ sudo gedit /usr/local/hadoop/etc/hadoop/yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
</configuration>
3.1.4 編輯mapred-site.xml
hduser@lynn:~$ sudo cp /usr/local/hadoop/etc/hadoop/mapred-site.xml.template /usr/local/hadoop/etc/hadoop/mapred-site.xml
hduser@lynn:~$ sudo gedit /usr/local/hadoop/etc/hadoop/mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
3.1.5 設置hdfs-site.xml
hdfs-site.xml 用于設置HDFS分布式文件系統(tǒng)的相關配置。Single Node Cluster中只有一臺服務器,所以需要身兼NameNode和DataNode.
hduser@lynn:~$ sudo gedit /usr/local/hadoop/etc/hadoop/hdfs-site.xml
<configuration>
<property>
<!--設置備份數(shù)量為3-->
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/hadoop_data/hdfs/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/hadoop_data/hdfs/datanode</value>
</property>
</configuration>
3.1.6 創(chuàng)建hdfs目錄并格式化HDFS文件系統(tǒng)
# 創(chuàng)建NameNode數(shù)據存儲目錄
hduser@lynn:~$ sudo mkdir -p /usr/local/hadoop/hadoop_data/hdfs/namenode
# 創(chuàng)建DataNode數(shù)據存儲目錄
hduser@lynn:~$ sudo mkdir -p /usr/local/hadoop/hadoop_data/hdfs/datanode
# 將hadoop目錄的所有者更改為hduser
hduser@lynn:~$ sudo chown hduser:hduser -R /usr/local/hadoop
# 格式化namenode-將HDFS格式化
hduser@lynn:~$ hadoop namenode -format
3.1.7 啟動HDFS
# 啟動hdfs
hduser@lynn:~$ start-dfs.sh
# 啟動YARN
hduser@lynn:~$ start-yarn.sh
# jps可以列出運行的所有java虛擬機進程
hduser@lynn:~$ jps
3.1.8 查看集群狀態(tài)
http://localhost:8088http://localhost:50070
3.2 集群分布方式
在真實的集群環(huán)境下安裝運行hadoop系統(tǒng),集群的每個節(jié)點可以運行l(wèi)inux.
將在VMware上創(chuàng)建4臺虛擬機,分別是master,data1,data2,data3
將在每一臺虛擬機設置兩張網卡:
- 網卡1:設置為NAT網卡,可以通過host主機連接到外部網絡internet
- 網卡2:設置為“僅主機模式”,用于創(chuàng)建內部網絡,內部網絡連接4臺虛擬主機與Host主機
- IP地址:master 192.168.56.100
data1 192.168.56.101
data2 192.168.56.102
data3 192.168.56.103
3.2.1 創(chuàng)建data1節(jié)點
從剛才創(chuàng)建的Single node clutch節(jié)點克隆出data1節(jié)點。選擇創(chuàng)建完整克隆,命名為data1.
添加網卡
3.2.1.1 設置固定IP
# 查看data1中的網卡
hduser@lynn:/$ ifconfig
# 顯示分別是ens33,ens37
# ens33是ubuntu默認的NAT的網卡
# 對應我們集群使用的網卡為ens37
# 配置靜態(tài)IP
hduser@lynn:/$ sudo gedit /etc/netplan/01-network-manager-all.yaml
network:
ethernets:
ens37:
addresses: [192.168.56.101/24] # 注意冒號后面需要有空格
dhcp4: no
optional: true
gateway4: 192.168.56.1
nameservers:
addresses: [192.168.56.1,114.114.114.114] # 114.114.114.114是電信的
version: 2
renderer: NetworkManager
hduser@lynn:/$ sudo netplan apply
hduser@lynn:/$ ifconfig
3.2.1.2 編輯主機名和hosts文件
# 編輯hostname主機名 設置data1
hduser@lynn:/$ sudo gedit /etc/hostname
data1
# 編輯hosts文件
hduser@lynn:/$ sudo gedit /etc/hosts
192.168.56.100 master
192.168.56.101 data1
192.168.56.102 data2
192.168.56.103 data3
3.2.1.3 編輯core-site.xml,yarn-site.xml,mapred-site.xml,hdfs-site.xml
hduser@lynn:/$ sudo gedit /usr/local/hadoop/etc/hadoop/core-site.xml
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
</property>
</configuration>
hduser@lynn:/$ sudo gedit /usr/local/hadoop/etc/hadoop/yarn-site.xml
<configuration>
<!--設置ResouceManager主機與NodeManager的連接地址,NodeManager通過這個地址向ResourceManager匯報運行情況-->
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:8025</value>
</property>
<!--設置ResourceManager與ApplicationMaster的連接地址,ApplicationMaster通過這個地址向ResourceManager申請資源、釋放資源等-->
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
</property>
<!--設置ResourceManager與客戶端的連接地址,客戶端通過該地址ResourceManger注冊應用程序、刪除程序等-->
<property>
<name>yarn.resourcemanager.address</name>
<value>master:8050</value>
</property>
</configuration>
hduser@lynn:/$ sudo gedit /usr/local/hadoop/etc/hadoop/mapred-site.xml
# mapred-site.xml用于設置監(jiān)控Map與Reduce程序的JobTracker任務分配情況,以及TaskTracker任務運行狀況
# 修改設置mapreduce.job.tracker的連接地址為master:54311
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>master:54311</value>
</property>
</configuration>
hduser@lynn:/$ sudo gedit /usr/local/hadoop/etc/hadoop/hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/hadoop_data/hdfs/datanode</value>
</property>
</configuration>
3.2.2 創(chuàng)建data2,data3,master節(jié)點
克隆data1到data2,data3,master
3.2.2.1 分別設置每個主機的固定IP
hduser@data1:/$ sudo gedit /etc/netplan/01-network-manager-all.yaml
ens37:
# 只需要更改此處的IP地址,data2為192.168.56.102
# data3為192.168.56.103
# master為192.168.56.100
addresses: [192.168.56.102/24]
dhcp4: no
optional: true
# 使設置生效
hduser@data1:/$ sudo netplan apply
# 查看網卡信息,確認ip地址無誤
hduser@data1:/$ ifconfig
3.2.2.2 設置每個主機的主機名
# data2設置為data2;data3設置為data3,master設置為master
hduser@data1:/$ sudo gedit /etc/hostname
3.2.3 設置master服務器
3.2.3.1 設置hdfs-site.xml
因為master現(xiàn)在只是單純的NameNode,刪除DataNode的HDFS設置
hduser@master:~$ sudo gedit /usr/local/hadoop/etc/hadoop/hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/hadoop_data/hdfs/namenode</value>
</property>
</configuration>
3.2.3.2 編輯masters文件和slaves文件
masters文件主要是告訴hadoop系統(tǒng)哪一臺服務器是NameNode.
slaves文件主要是告訴hadoop系統(tǒng)哪些服務器是DataNode.文章來源:http://www.zghlxwxcb.cn/news/detail-741101.html
hduser@master:~$ sudo gedit /usr/local/hadoop/etc/hadoop/masters
master
hduser@master:~$ sudo gedit /usr/local/hadoop/etc/hadoop/slaves
data1
data2
data3
3.2.4 測試
- 啟動master,data1,data2,data3四個節(jié)點
- 從master主機連接到data1
hduser@master:~$ ssh data1
文章來源地址http://www.zghlxwxcb.cn/news/detail-741101.html
- 創(chuàng)建HDFS目錄datanode,對data2及data3重復此操作.
hduser@data1:~$ sudo rm -rf /usr/local/hadoop/hadoop_data/hdfs/
[sudo] password for hduser:
hduser@data1:~$ mkdir -p /usr/local/hadoop/hadoop_data/hdfs/datanode
hduser@data1:~$ sudo chown -R hduser:hduser /usr/local/hadoop
hduser@data1:~$ exit
logout
Connection to data1 closed.
- 重新創(chuàng)建并格式化NameNode HDFS目錄
# 創(chuàng)建NameNode目錄
hduser@master:~$ sudo rm -rf /usr/local/hadoop/hadoop_data/hdfs
[sudo] password for hduser:
hduser@master:~$ mkdir -p /usr/local/hadoop/hadoop_data/hdfs/namenode
hduser@master:~$ sudo chown -R hduser:hduser /usr/local/hadoop
# 格式化
hduser@master:~$ hdfs namenode -format
- 啟動hadoop multinode cluster
hduser@master:~$ start-dfs.sh
hduser@master:~$ start-yarn.sh
hduser@master:~$ jps
- 可以看見master服務器的狀態(tài):
HDFS功能:Namenode,SecondaryNameNode
MapReduce2(YARN): ResourceManager - 查看數(shù)據服務器節(jié)點data1(DataNode)進程的狀態(tài)
在data1的終端上輸入jps
HDFS:DataNode
MapReduce2(YARN
: NodeManager - 打開Hadoop ResouceManager Web界面 http://master:8088
- 打開NameNode Web界面 http://master:50070/
到了這里,關于【大數(shù)據存儲與處理】1. hadoop單機偽分布安裝和集群安裝的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!