hadoop 分布式環(huán)境搭建

準備

  • 在 vmware 虛擬機中安裝 Linux 系統(tǒng)
  • 安裝 vmware-tool 工具,可以增強桌面顯示效果,還可以和宿主機用共享文件夾的方式傳遞文件
    • 解壓 vmware-tool.iso 文件,sudo ./vmware-install.pl 執(zhí)行安裝腳本即可
    • 啟用共享文件夾

搭建分布式系統(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_rsaid_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_HOME
      • export JAVA_HOME=/usr/local/jdk/jdk1.8.0_71
    • 2, 配置 yarn-env.sh 文件-->修改 JAVA_HOME
      • export JAVA_HOME=/usr/local/jdk/jdk1.8.0_71
    • 3,配置slaves文件-->>增加 slave 節(jié)點
      • 刪除 localhost, 增加jason jason2
    • 4,配置 core-site.xml 文件-->>增加 hadoop 核心配置
<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”就表示成功了
  • 啟動 hdfs
    • 執(zhí)行 ./sbin/start-dfs.sh
  • 查看 java 進程
    • 執(zhí)行 jps
  • 停 止 hdfs
    • 執(zhí)行 ./sbin/stop-dfs.sh
  • 啟動 yarn
    • 執(zhí)行 ./sbin/start-yarn.sh
  • 查看 java 進程
    • 執(zhí)行 jps
  • 停 止 yarn
    • 執(zhí)行 ./sbin/stop-yarn.sh
  • 查看集群狀態(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/*

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容