準備
- 在 vmware 虛擬機中安裝 Linux 系統(tǒng)
- 安裝 vmware-tool 工具,可以增強桌面顯示效果,還可以和宿主機用共享文件夾的方式傳遞文件
- 解壓 vmware-tool.iso 文件,
sudo ./vmware-install.pl執(zhí)行安裝腳本即可 - 啟用共享文件夾
- 解壓 vmware-tool.iso 文件,
搭建分布式系統(tǒng)需要多臺虛擬機
- 創(chuàng)建用戶組和用戶
- 第一臺虛擬機在關機狀態(tài)下創(chuàng)建一個完整克隆,就有了兩臺虛擬機(有兩臺以上真機更好,這里只能虛擬幾臺了)
修改主機名
- 修改
/etc/hostname,添加 jason - 修改
/etc/hosts,添加192.168.1.200 jason,192.168.1.201 jason2(可以把ip設置成固定的) - 修改第二臺
/etc/hosts,添加192.168.1.200 jason,192.168.1.201 jason2(檢測互相 ping 通)
SSH 無密碼驗證
-
sudo apt-get install openssh-server(如果是CentOS,就用sudo yum install openssh-server),安裝客戶端 -
ssh-keygen -t rsa -P,生成公鑰和私鑰 - 查看路徑
/home/jason/.ssh文件里是否有id_rsa和id_rsa.pub - 將公鑰賦給
authorized_keys:cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys - 無密碼登錄:
ssh localhost - 在 jason 上執(zhí)行:
ssh-copy-id jason2,查看 jason2的/home/jason/.ssh文件里是否有authorized_keys - 在 jason2 上執(zhí)行相同的操作
安裝 JDK
- 先卸載自帶的 openjdk
-
rpm -qa | grep jdk找到系統(tǒng)自帶的版本, -
yum -y remove *****卸載之,
-
- 在
/usr/local/目錄下創(chuàng)建文件夾 jdk ,把要安裝的jdk解壓到這個目錄下 - 配置環(huán)境變量
vim /etc/profile,添加下面的配置-
export JAVA_HOME=/usr/local/jdk/jdk1.8.0_171
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
PS:可以把 bin 和 sbin 都配置在 PATH 中,方便以后使用; - 執(zhí)行命令,使配置生效:
source /etc/profile; - 執(zhí)行命令:
java -version,若出現(xiàn)java版本號,則說明安裝成功
-
hadoop 集群安裝
- 解壓
hadoop-2.6.0.tar.gz到/home/jason/目錄,把名字改成 hadoop, - 配置環(huán)境變量
vim /etc/profile,添加下面的配置-
export HADOOP_HOME=/home/jason/hadoop
export PATH=$HADOOP_HOME/bin:$PATH
-
- 修改 hadoop 配置文件,在
hadoop/etc/hadoop目錄下,有 7 個:- 1, 配置
hadoop-env.sh文件-->修改 JAVA_HOMEexport JAVA_HOME=/usr/local/jdk/jdk1.8.0_71
- 2, 配置
yarn-env.sh文件-->修改 JAVA_HOMEexport JAVA_HOME=/usr/local/jdk/jdk1.8.0_71
- 3,配置slaves文件-->>增加 slave 節(jié)點
- 刪除 localhost, 增加
jason jason2
- 刪除 localhost, 增加
- 4,配置
core-site.xml文件-->>增加 hadoop 核心配置
- 1, 配置
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://jason:9000</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/home/jason/hadoop/tmp</value>
<description>Abasefor other temporary directories.</description>
</property>
<property>
<name>hadoop.native.lib</name>
<value>true</value>
<description>Should native hadoop libraries, if present, be used.</description>
</property>
</configuration>
- 5,配置
hdfs-site.xml文件-->>增加hdfs配置信息(namenode、datanode端口和目錄位置)
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>jason:9001</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/jason/hadoop/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value> file:/home/jason/hadoop/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>
- 6,配置
mapred-site.xml文件-->>增加mapreduce配置(使用yarn框架、jobhistory使用地址以及web地址)
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>jason:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value> jason:19888</value>
</property>
</configuration>
- 7,配置
yarn-site.xml文件-->>增加yarn功能
<configuration>
<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>
<property>
<name>yarn.resourcemanager.address</name>
<value>jason:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>jason:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>jason:8035</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>jason:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>jason:8088</value>
</property>
</configuration>
- 8,將配置好的 jason 中/hadoop/etc/hadoop文件夾復制到到 jason2 對應位置(刪除 jason2 原來的文件夾/hadoop/etc/hadoop)
在 jason 中執(zhí)行拷貝命令:scp -r /home/jason/hadoop/etc/hadoop/ jason@jason2:/home/jason/hadoop/etc/
驗證安裝
- 格式化 namenode
- 執(zhí)行
./bin/hdfs namenode -format出現(xiàn)“successfully formatted”就表示成功了
- 執(zhí)行
- 啟動 hdfs
- 執(zhí)行
./sbin/start-dfs.sh
- 執(zhí)行
- 查看 java 進程
- 執(zhí)行
jps
- 執(zhí)行
- 停 止 hdfs
- 執(zhí)行
./sbin/stop-dfs.sh
- 執(zhí)行
- 啟動 yarn
- 執(zhí)行
./sbin/start-yarn.sh
- 執(zhí)行
- 查看 java 進程
- 執(zhí)行
jps
- 執(zhí)行
- 停 止 yarn
- 執(zhí)行
./sbin/stop-yarn.sh
- 執(zhí)行
- 查看集群狀態(tài)
- 啟動:
./sbin/start-dfs.sh - 查看:
./bin/hdfs dfsadmin -report
- 啟動:
- 查看hdfs:
http://jason:50070/ - 查看yarn:
http://jason:8088/
運行 wordcount 程序
wordcount 程序由 hadoop 提供,位于share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar內。
創(chuàng)建 file目錄
在 file 中創(chuàng)建 file1.txt、file2.txt 并寫內容:
file1.txt輸入內容:Hello world hi HADOOP
file2.txt輸入內容:Hello hadoop hi CHINA在 hdfs 創(chuàng)建
/input2目錄:./bin/hadoop fs -mkdir /input2將file1.txt、file2.txt文件 copy 到
hdfs /input2目錄:./bin/hadoop fs -put file/file*.txt /input2查看hdfs上是否有file1.txt、file2.txt文件:
hadoop fs -ls /input2/-
執(zhí)行 wordcount 程序
- 先啟動 hdfs 和 yarn
- 執(zhí)行程序:
./bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar wordcount /input2/ /output2/wordcount1
查看運行結果:
/bin/hdfs dfs -cat /output2/wordcount1/*