一.環境配置
jdk1.8
centos7
二.環境搭建
1.安裝jdk
這個不用怎么說了吧,可以直接yum安裝或者自己下載tar包。yum安裝不用配置javahome,但是需要知道javahome位置,因為hadoop是java項目,運行需要jdk環境。通過yum安裝查找javahome如下:
$whereis javac javac: /usr/bin/javac /usr/share/man/man1/javac.1.gz
可以看出結果是兩個目錄 用ll命令查看這兩個目錄詳情
$ll /usr/bin/javac lrwxrwxrwx. 1 root root 23 8月 7 14:03 /usr/bin/javac -> /etc/alternatives/javac
這個是個軟連接 指向/etc/alternatives/javac 繼續對這個目錄ll直至不在出現軟連接為止
$ll /etc/alternatives/javac lrwxrwxrwx. 1 root root 70 8月 7 14:03 /etc/alternatives/javac -> /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_64/bin/javac
$ ll /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_64/bin/javac
-rwxr-xr-x. 1 root root 7424 7月 24 00:34 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_64/bin/javac
$ ll /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_64
總用量 50780
drwxr-xr-x. 2 root root 4096 8月 7 14:03 bin
drwxr-xr-x. 10 root root 134 8月 7 14:03 demo
drwxr-xr-x. 3 root root 132 8月 7 14:03 include
drwxr-xr-x. 4 root root 28 8月 7 14:03 jre
drwxr-xr-x. 3 root root 144 8月 7 14:03 lib
drwxr-xr-x. 11 root root 162 8月 7 14:03 sample
-rw-r--r--. 1 root root 51993150 7月 23 23:59 src.zip
drwxr-xr-x. 2 root root 204 8月 7 14:03 tapset
看出來這個文件夾就是jdk的安裝路徑了。
2 centos7 linux用戶之間免登陸
a)分別在機器上創建相同的用戶,設置密碼
b)在a機器上運行ssh-keygen命令生成公鑰私鑰
c)將a中的公鑰id_dsa.pub烤到b機器上,並查看是否有authorized_keys這個文件,如果有追加id_dsa.pub內容在authorized_keys文件中,沒有則創建,並將它的權限修改為600(chmod 600 authorized_keys)
d)b中ssh測試是否能,免密連接
a連b亦是同理
3.安裝hadoop
前置准備 三台機器ip,主機名分別為
將三台機器/etc/hosts都修改為這種,ip主機名根據實際而定
a) 下載網站,選擇合適的版本 http://mirror.bit.edu.cn/apache/hadoop/common/
b)下載好以后解壓 tar -zxvf 安裝包
c)配置 core-site.xml hdfs-site.xml yarn-site.xml mapred-site.xml 這四個文件hadoop安裝包 etc/hadoop/目錄下
core文件主要用於配置namenode地址和tmp文件地址
$ vim etc/hadoop/core-site.xml <configuration> <!-- 指定HDFS老大(namenode)的通信地址 --> <property> <name>fs.defaultFS</name> <value>hdfs://master:9000</value> </property> <!-- 指定hadoop運行時產生文件的存儲路徑 --> <property> <name>hadoop.tmp.dir</name> <value>/workhome/hadoop-3.1.0/data/tmp</value> </property> </configuration>
hdfs用於設置namenode datanode,hdfs備份份數 默認是3
dfs.permissionsdfs權限是否打開 ,通過idea遠程操作的時候提示沒有權限訪問不了 因此設置為false 默認值是true
$ vim etc/hadoop/hdfs-site.xml
<configuration> <property> <name>dfs.name.dir</name> <value>/workhome/hadoop-3.1.0/hdfs/name</value> <description>namenode上存儲hdfs名字空間元數據 </description> </property> <property> <name>dfs.data.dir</name> <value>/workhome/hadoop-3.1.0/hdfs/data</value> <description>datanode上數據塊的物理存儲位置</description> </property> <!-- 設置hdfs副本數量 --> <property> <name>dfs.replication</name> <value>2</value> </property> <property> <name>dfs.permissions</name> <value>false</value> </property> </configuration>
mapred設置mapreduce
$ vim etc/hadoop/mapred-site.xml
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>mapreduce.jobhistory.address</name> <value>master:10020</value> </property> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>master:19888</value> </property> <property> <name>mapred.job.tracker</name> <value>http://master:9001</value> </property> </configuration>
$ vim 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> <property> <name>yarn.resourcemanager.address</name> <value>master:8032</value> </property> <property> <name>yarn.resourcemanager.scheduler.address</name> <value>master:8030</value> </property> <property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>master:8031</value> </property> <property> <name>yarn.resourcemanager.admin.address</name> <value>master:8033</value> </property> <property> <name>yarn.resourcemanager.webapp.address</name> <value>master:8088</value> </property> </configuration>
修改 etc/hadoop/hadoop-env.sh 添加java安裝路徑
$ vim etc/hadoop/hadoop-env.sh export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_64
配置hadoop環境變量
$ vim /etc/profile export HADOOP_HOME=/workhome/hadoop-3.1.0 export PATH=$PATH:$HADOOP_HOME/bin
然后將master這個hadoop完整的復制到其他機器即可
最后在master etc/hadoop下新增workers 將slave機器添加進去 ,以后要是擴展節點 也應該添加到這個里面
e)初始化:
hadoop namenode -format
f) 啟動
只需啟動master的
hadoop安裝路徑/sbin/start-all.sh
查看:jps命令 用來查看啟動了的java服務
master
slave1
slave2
只需查看到master上有namenode slave上有datanode就代表成功。
g)關閉 /sbin/stop-all.sh腳本
四.遇到的問題以及解決方案
擴展一台機器,重啟服務沒有datanode
解決方案:清除 core-site.xml中配置的tmp文件夾 以及hdfs-site.xml中配置的datanode和namenode的文件夾 重新格式化namenode