一、環境準備
①準備三臺虛擬機,查看ip
②先修改主機名(每個節點統一命名規範)
修改/etc/hosts文件:(如下)
172.18.96.1 master
172.18.96.2 slave1
172.18.96.3 slave3
二、永久關閉防火牆
systemctl stop firewalld
systemctl disable firewalld
三、配置ssh免密登錄
三臺機器都運行:
ssh-keygen -t rsa #一路回車即可
cd 到 /root/.ssh目錄下:
創建文件:
touch authorized_keys #生成公鑰
將三臺機器下的/root/.ssh/id_rsa.pub文件中的內容拷貝到人認證文件authorized_keys中,然後依次分發給兩外兩臺機器。
四、配置jdk1.8
將jdk解壓到自定義目錄
vim /etc/profile #添加如下信息
export JAVA_HOME=jdk安裝目錄
export CLASSPATH=$JAVA_HOME/lib/
export PATH=$PATH:JAVA_HOME/bin
再保存執行
source /etc/profile
驗證
java -version
五、Hadoop環境配置
解壓並移動到自定義位置
vim /etc/profile
export HADOOP_HOME=Hadoop的安裝目錄
export PATH=HADOOP_HOME/bin
export PATH=HADOOP_HOME/sbin
更新資源使生效
source /etc/profile
首先在hadoop-env.sh文件中指定JDK的路徑
export JAVA_HOME=jdk安裝目錄
配置core-site.xml
添加內容如下:
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/tmp</value>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
</configuration>
配置hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.http-address</name>
<value>master:50070</value>
</property>
<property><!--namenode持久存儲名字空間及事務日誌的本地文件系統路徑-->
<name>dfs.namenode.name.dir</name>
<value>/usr/local/hadoop/dfs/name</value>
</property>
<property><!--DataNode存放塊數據的本地文件系統路徑-->
<name>dfs.datanode.data.dir</name>
<value>/usr/local/hadoop/dfs/data</value>
</property>
<property><!--數據需要備份的數量,不能大於集羣的機器數量,默認爲3-->
<name>dfs.replication</name>
<value>2</value>
</property>
</configuration>
配置yarn-site.xml
<configuration>
<property><!--NodeManager上運行的附屬服務,用於運行mapreduce-->
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:8088</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
</configuration>
配置mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
修改workers文件,刪除localhost,並換成
slave1
slave2
修改以下四個文件
$ vim sbin/start-dfs.sh
$ vim sbin/stop-dfs.sh
兩處增加以下內容
HDFS_DATANODE_USER=root
HDFS_DATANODE_SECURE_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
處理2
$ vim sbin/start-yarn.sh
$ vim sbin/stop-yarn.sh
兩處增加以下內容
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
將hadoop分發給另外兩個結點:
Hadoop安裝完成,格式化Namenode
Hadoop namenode -format
啓動Hadoop
./start-all.sh
運行hadoop例程中自帶的wordcount程序:
1.先在hdfs上創建文件夾:
hadoop fs -mkdir -p /data/input
2.在本地創建一個my_wordcount.txt
touch my_wordcount.txt
3.編輯my_wordcount.txt文件,輸入一些字符
nano my_wordcount.txt
比如:
hello world
hello hadoop
hello I will eat lunch
4.把本地的my_wordcount.txt文件上傳到雲端,由主機進行文件的分佈式存儲。
hadoop fs -put my_wordcount.txt /data/input
5.查看雲端的/data/input文件夾下面是否有該文件
hadoop fs -ls /data/input
6.運行share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar這個java程序,調用wordcount方法。
在hadoop_home的目錄下執命令:
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar wordcount /data/input/ /data/out/my_wordcount
7.查看雲端的/data/output/my_wordcount/part-r-00000文件。
hadoop fs -cat /data/out/my_wordcount/part-r-00000
注意:在運行Java程序時,會遇到加載不到類的錯誤:
解決方法:
在命令行執行hadoop classpath命令,將執行後的內容複製到yarn-site.xml中,如下所示:
將yarn-site.xml在分發給兩外兩臺機器。
先將進程停止:stop-all.sh
在重新開啓進程:start-all.sh
在重新執行java程序,就好了。