學(xué)習(xí)大數(shù)據(jù)從安裝Hadoop開始(單機(jī)版)
文章已收錄到我的Github精選,歡迎Star:https://github.com/yehongzhi/learningSummary
前言
最近上手學(xué)習(xí)大數(shù)據(jù),大數(shù)據(jù)當(dāng)然離不開核心的Hadoop,所以首先要搭建一個(gè)Hadoop環(huán)境。我本機(jī)電腦配置不太高,又是學(xué)習(xí)階段,所以就整個(gè)單機(jī)版的玩玩,下面記錄一下步驟,希望對(duì)大家有所幫助。
前期準(zhǔn)備
| 名稱 | 版本 | 來源 |
|---|---|---|
| 虛擬機(jī)CentOS | CentOS 7 | 略 |
| JDK | 1.8 | Oracle官網(wǎng) |
| hadoop | 3.2.2 | hadoop官網(wǎng) |
虛擬機(jī)安裝,和JDK安裝就不多說了,對(duì)于做Java開發(fā)的來說都是小菜一碟。
關(guān)閉防火墻
要關(guān)閉防火墻首先得看開沒開,查看防火墻狀態(tài),使用命令systemctl status firewalld.service。

得先用su root,切換到root,然后使用關(guān)閉防火墻命令systemctl status firewalld.service。關(guān)了之后在查看狀態(tài),如圖所示已經(jīng)關(guān)閉了。

但是如果重新開機(jī)還是會(huì)自動(dòng)啟動(dòng),所以要設(shè)置開機(jī)禁止防火墻。使用命令systemctl disable firewalld.service。相反,開機(jī)啟動(dòng)防火墻就是systemctl enable firewalld.service。
設(shè)置靜態(tài)IP
為什么要設(shè)置靜態(tài)IP呢,因?yàn)橛袝r(shí)候虛擬機(jī)設(shè)置的網(wǎng)絡(luò)IP地址是自動(dòng)分配的,自動(dòng)分配的IP問題就出在每次啟動(dòng)虛擬機(jī)的時(shí)候會(huì)隨機(jī)分配一個(gè)IP,這個(gè)IP是不固定的,那么當(dāng)我們用遠(yuǎn)程工具連接的時(shí)候就很不方便,每次都得先使用命令ip addr查詢虛擬機(jī)的IP地址。
廢話不多說,打開vim /etc/sysconfig/network-scripts/ifcfg-enp0s3文件編輯。

上面這個(gè)就是自動(dòng)獲取IP地址的配置,怎么改成靜態(tài)IP呢?很簡單,看下面配置。
1)BOOTPROTO="static"
2)ONBOOT="yes"
3)配置IPADDR、NETMASK、GATEWAY、DNS1、DNS2。
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="enp0s3"
UUID="57b0050a-6c8c-4b6f-be68-3810f8ab9b5d"
DEVICE="enp0s3"
ONBOOT="yes"
IPADDR=192.168.1.4
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=119.29.29.29
DNS2=8.8.8.8
接著重新加載systemctl restart network。
然后驗(yàn)證的話,可以輸入ip addr命令查看一下IP地址。最后ping一下百度,看網(wǎng)絡(luò)是否通暢。
關(guān)閉selinux服務(wù)
打開vim /etc/selinux/config編輯文件,修改如下配置:
SELINUX=disabled
重啟服務(wù)器生效,命令為reboot。
修改主機(jī)名
修改主機(jī)名+域名映射,在訪問的時(shí)候就可以不用IP地址而用域名,方便很多。
使用命令vim /ect/hostname,修改主機(jī)名為hadooptest100。
域名映射,使用命令vim /ect/hosts,修改以下配置:
192.168.1.4?hadooptest100
接著重啟服務(wù)器生效。
設(shè)置SSH免密登錄
執(zhí)行以下命令。
ssh-keygen?-t?rsa
cat?/home/hadoop/.ssh/id_rsa.pub?>>?/home/hadoop/.ssh/authorized_keys
chmod?700?/home/hadoop/.ssh
chmod?600?/home/hadoop/.ssh/authorized_keys
使用ssh localhost驗(yàn)證,如果不需要密碼即可登錄則表示設(shè)置成功。使用exit命令退出登錄。
安裝Hadoop
首先把壓縮包放在usr/local/目錄下,然后解壓tar -zxvf /usr/local/hadoop-3.2.2。

配置環(huán)境變量
使用命令vim /etc/profile編輯,在末尾加上:
export?JAVA_HOME=/usr/local/jdk1.8.0_161
export?PATH=$JAVA_HOME/bin:$PATH
export?HADOOP_HOME=/usr/local/hadoop-3.2.2
export?HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export?HADOOP_OPTS=-Djava.library.path=$HADOOP_HOME/lib
export?PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
wq保存退出之后,使用命令source /etc/profile重新加載配置。最后我們使用hadoop version驗(yàn)證。

核心文件設(shè)置
進(jìn)入到hadoop安裝目錄的${HADOOP_HOME}/etc/hadoop/目錄,設(shè)置core-site.xml文件:
<configuration>
????<property>
????????<name>hadoop.tmp.dirname>
????????<value>/hadoop/data/tmpvalue>
????????<description>hadoop?tmp?dirdescription>
????property>
????<property>
????????<name>fs.default.namename>
????????<value>hdfs://hadooptest100:9000value>
????property>
configuration>
設(shè)置hdfs-site.xml文件:
<configuration>
<property>
????<name>dfs.replicationname>
????<value>1value>
????<description>設(shè)置副本數(shù)description>
property>
<property>
???<name>dfs.namenode.name.dirname>
???<value>file:///hadoop/data/dfs/namevalue>
???<description>nameNodedescription>
property>
<property>
???<name>dfs.datanode.data.dirname>
???<value>file:///hadoop/data/dfs/datavalue>
??<description>dataNodedescription>
property>
<property>
????<name>dfs.permissionsname>
????<value>falsevalue>
????<description>permissiondescription>
property>
<property>
????<name>dfs.secondary.http.addressname>
????<value>hadooptest100:50070value>
?<description>SNN?pathdescription>
property>
configuration>
設(shè)置mapred-site.xml文件:
<configuration>
????<property>
???????????<name>mapreduce.framework.namename>
???????????<value>yarnvalue>
????property>
configuration>
設(shè)置yarn-site.xml文件:
<configuration>
????
????<property>
????????<name>yarn.resourcemanager.hostnamename>
????????<value>hosttest100value>
????property>
????
????<property>
????????<name>yarn.nodemanager.aux-servicesname>
????????<value>mapreduce_shufflevalue>
????property>
configuration>
設(shè)置hadoop_evn.sh文件:
export?HDFS_DATANODE_USER=root
export?HDFS_DATANODE_SECURE_USER=root
export?HDFS_NAMENODE_USER=root
export?HDFS_SECONDARYNAMENODE_USER=root
export?YARN_RESOURCEMANAGER_USER=root
export?YARN_NODEMANAGER_USER=root
export?JAVA_HOME=/usr/local/jdk1.8.0_161
export?HADOOP_HOME=/usr/local/hadoop-3.2.2
cd到sbin目錄下,設(shè)置start-dfs.sh、stop-dfs.sh文件,在前面加上:
HDFS_DATANODE_USER=root
HDFS_DATANODE_SECURE_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
設(shè)置start-yarn.sh、stop-yarn.sh文件,在前面加上:
YARN_RESOURCEMANAGER_USER=root
HDFS_DATANODE_SECURE_USER=yarn
YARN_NODEMANAGER_USER=root
啟動(dòng)hadoop
首先需要格式化,切換到bin目錄下,使用以下命令。
hdfs?namenode?-format
接著就cd到sbin目錄下,使用命令./start-all.sh一鍵啟動(dòng)hadoop。

然后使用jps命令查看java進(jìn)程。
[root@hadooptest100?sbin]#?jps
24530?NameNode
24738?DataNode
25198?SecondaryNameNode
26110?NodeManager
1918?Jps
最后可以在瀏覽器輸入hadoop服務(wù)器的ip加上9870端口號(hào),訪問hadoop的管理界面。

總結(jié)
這里需要說明的是,我是為了方便才使用root用戶部署hadoop,在生產(chǎn)環(huán)境切記不可使用root用戶。所謂萬事開頭難,部署完hadoop環(huán)境之后,下一步我們就可以學(xué)習(xí)MapReduce了。感謝大家的閱讀,希望能對(duì)你有所幫助。
覺得有用就點(diǎn)個(gè)贊吧,你的點(diǎn)贊是我創(chuàng)作的最大動(dòng)力~
我是一個(gè)努力讓大家記住的程序員。我們下期再見!??!
能力有限,如果有什么錯(cuò)誤或者不當(dāng)之處,請(qǐng)大家批評(píng)指正,一起學(xué)習(xí)交流!
