如下是本次搭建說使用的服務器html
IP | 節點名稱 | 說明 |
192.168.172.130 | master | 主服務器 |
192.168.172.131 | slave1 | 從服務器1 |
192.168.172.132 | slave2 | 從服務器2 |
一、分別 在三臺服務器上新增用戶、組java
groupadd hadoop useradd -d /home/hadoop -g hadoop -s /bin/bash -m hadoop visudo #在文中root行下添加hadoop行 root ALL=(ALL:ALL) ALL hadoop ALL=(ALL) ALL
vi /etc/hosts #追加以下內容 192.168.172.130 master 192.168.172.131 slave1 192.168.172.132 slave2
vi /etc/hostname #master服務器將內容修改成以下內容 hadoop_master.localdomain #slave1服務器將內容修改成以下內容 hadoop_slave1.localdomain #slave2服務器將內容修改成以下內容 hadoop_slave2.localdomain
#重啓服務器 reboot
vim /etc/ssh/sshd_config #找到如下內容,並去掉註釋符「#」 RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys
重啓sshd服務node
/sbin/service sshd restart
本機生成公鑰和私鑰
本機切換成須要免密碼登錄的帳戶,而後運行如下命令:linux
ssh-keygen -t rsa
運行後默認會在該帳號的home目錄下生成~/.ssh/id_rsa: 私鑰和~/.ssh/id_rsa.pub:公鑰兩個文件。apache
將公鑰導入本機認證文件vim
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
將公鑰導入到目標(將遠程登陸到的服務器)服務器的特定帳號(將以該帳號登陸遠程服務器)的認證文件瀏覽器
scp ~/.ssh/id_rsa.pub xxx@目標主機ip或主機名:/home/xxx/id_rsa.pub
而後以相應帳號登陸到遠程服務器,再運行如下命令導入公鑰到認證文件bash
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys //將全部服務器的id_rsa.pub相互導入服務器
修改遠程服務器相應帳號下的.ssh文件夾和authorized_keys文件的權限服務器
chmod 700 ~/.ssh
chmod 710 ~/.ssh/authorized_keys
測試是否配置成功app
在 master 服務器使用以下命令,第一次會提示輸入一次公鑰密碼,之後再次登陸再也不提示則表示成功
ssh slave1 ssh slave2
在 slave1 服務器使用以下命令,第一次會提示輸入一次公鑰密碼,之後再次登陸再也不提示則表示成功
ssh master ssh slave2
在 slave2 服務器使用以下命令,第一次會提示輸入一次公鑰密碼,之後再次登陸再也不提示則表示成功
ssh master ssh slave1
若上面操做始終提示須要輸入密碼,嘗試修改hadoop用戶組再重複上面操做
usermod -G root hadoop
mkdir -p /usr/local/java
下載jdk1.8版本,並將其解壓到/usr/local/java目錄下
tar -zxf jdk-8u65-linux-x64.tar.gz -C /usr/local/java/
配置環境變量
vi /etc/profile #在配置文件的最後添加以下配置 #JAVA JAVA_HOME=/usr/local/java/jdk1.8.0_65 #本身解壓後的jdk目錄名稱 JRE_JOME=/usr/local/java/jdk1.8.0_65/jre CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin export JAVA_HOME JRE_JOME CLASS_PATH PATH
保存退出後,執行如下命令刷新環境變量
source /etc/profile
進行測試是否成功
java -version
cd /usr/local/ sudo wget https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/core/hadoop-3.1.1/hadoop-3.1.1.tar.gz
#解壓配置環境變量
tar -zxf hadoop-3.1.1.tar.gz -C /usr/local/hadoop/
配置hadoop環境變量
vi /etc/profile #在配置文件最後一行添加以下配置 #HADOOP export HADOOP_HOME=/usr/local/hadoop/hadoop-3.1.1 export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
運行以下命令刷新環境變量
source /etc/profile
進行測試是否成功
hadoop version
配置Hadoop3.1.1
#在/usr/local/hadoop目錄下建立目錄 cd /usr/local/hadoop/ mkdir tmp mkdir var mkdir dfs mkdir dfs/name mkdir dfs/data
進入hadoop的配置文件目錄下,修改配置文件
cd /usr/local/hadoop/hadoop-3.1.1/etc/hadoop vi workers
#刪除localhost,添加從節點主機名,例如我這裏是:
slave1
slave2
vi hadoop-env.sh 在# JAVA_HOME=/usr/java/testing hdfs dfs -ls一行下面添加以下代碼 export JAVA_HOME=/usr/local/java/jdk1.8.0_65 export HADOOP_HOME=/usr/local/hadoop/hadoop-3.1.1 export HDFS_NAMENODE_USER=hadoop export HDFS_DATANODE_USER=hadoop export HDFS_SECONDARYNAMENODE_USER=hadoop export YARN_RESOURCEMANAGER_USER=hadoop export YARN_NODEMANAGER_USER=hadoop
vim /usr/local/hadoop/hadoop-3.1.1/etc/hadoop/core-site.xml
內容以下:
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://192.168.172.130:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/usr/local/hadoop/tmp</value> </property> </configuration>
vim /usr/local/hadoop/hadoop-3.1.1/etc/hadoop/hdfs-site.xml
內容以下:
<configuration> <property> <name>dfs.name.dir</name> <value>/usr/local/hadoop/dfs/name</value> <description> Path on the local filesystem where theNameNode stores the namespace and transactions logs persistently. </description> </property> <property> <name>dfs.data.dir</name> <value>/usr/local/hadoop/dfs/data</value> <description> Comma separated list of paths on the localfilesystem of a DataNode where it should store itsblocks. </description> </property> <property> <name>dfs.namenode.http-address</name> <value>192.168.172.130:50070</value> </property> <property> <name>dfs.namenode.secondary.http-address</name> <value>192.168.172.130:50090</value> </property> <property> <name>dfs.replication</name> <value>2</value> </property> <property> <name>dfs.permissions</name> <value>false</value> <description>need not permissions</description> </property> </configuration>
在命令行下輸入以下命令,並將返回的地址複製,在配置下面的yarn-site.xml時會用到。
hadoop classpath
將上面命令獲取的到結果複製一下,下面會用到
vim /usr/local/hadoop/hadoop-3.1.1/etc/hadoop/yarn-site.xml
內容以下:
<configuration> <!-- Site specific YARN configuration properties --> <property> <name>yarn.resourcemanager.hostname</name> <value>master</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.application.classpath</name> <value>輸入剛纔返回的Hadoop classpath路徑</value> </property> </configuration>
如下命令一條一條執行
scp -r /usr/local/java slave1:/usr/local/java scp -r /usr/local/hadoop slave1:/usr/local/hadoop scp -r /etc/profile slave1:/etc/ scp -r /usr/local/java slave2:/usr/local/java scp -r /usr/local/hadoop slave2:/usr/local/hadoop scp -r /etc/profile slave2:/etc/
上面的全部命令都執行完以後,分別在slave一、slave2刷新環境變量
source /etc/profile
hdfs namenode -format
start-all.sh
啓動完以後在master、slave一、slave2上執行以下命令,查看啓動狀況
jps
在瀏覽器查看啓動狀況:http://192.168.172.130:8088/cluster
或者 http://192.168.172.130:50070/dfshealth.html#tab-overview