非root使用者搭建hadoop偽分散式
阿新 • • 發佈:2019-01-26
0、安裝軟體列表
jdk-7u25-linux-x64.tar.gz
hadoop-2.5.0.tar.gz
hadoop-native-64-2.5.0.tar
1、準備Linux環境(root使用者)
1.1、修改主機名:vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=hadoop1
1.2、修改上網IP
#windows端:
開啟虛擬軟體VMware,Edit --> Virtual Network Editor下點選Restore Default。開啟網路和共享中心 -> 更改介面卡設定 -> 將連線網線的連線設定為“共享”,並共享給VMware Network Adapter VMnet8,此時IP為:192.168.137.1。
#Linux端:
修改配置檔案方式:vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
BOOTPROTO="static"
HWADDR="00:0C:29:3C:BF:E7"
IPV6INIT="yes"
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE="Ethernet"
UUID="ce22eeca-ecde-4536-8cc2-ef0dc36d4a8c"
IPADDR="192.168.137.31"
NETMASK="255.255.255.0"
GATEWAY="192.168.137.1"
1.3、修改主機名和IP的對映關係: vim /etc/hosts
192.168.137.31 hadoop1
1.4、關閉防火牆
#檢視防火牆狀態
service iptables status
#關閉防火牆
service iptables stop
#關閉防火牆開機啟動
chkconfig iptables off
#檢視防火牆開機啟動狀態
chkconfig iptables --list
1.5、重啟系統:reboot
2、配置ssh免登陸(非root使用者,這裡使用者名稱為hadoop)
2.1、生成ssh免登陸金鑰
ssh-keygen -t rsa -P ''
執行完這個命令後,在~/.ssh目錄下生成兩個檔案id_rsa(私鑰)、id_rsa.pub(公鑰)
2.2、將公鑰拷貝到要免登陸的機器上
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
2.3、修改檔案authorized_keys許可權,如果不設定,在驗證時仍提示輸入密碼。
chmod 600 ~/.ssh/authorized_keys
2.4、用root使用者設定SSH配置檔案/etc/ssh/sshd_config
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
2.5、重啟SSH服務,使剛才設定有效。
service sshd restart
2.6、退出root登入,使用hadoop普通使用者驗證是否成功。
ssh localhost
3、安裝JDK(非root使用者,這裡使用者名稱為 hadoop)
3.1、上傳到/home/hadoop/soft
3.2、解壓安裝:tar -xvf jdk-7u25-linux-x64.tar.gz
3.3、將java新增到環境變數中:vim ~/.bash_profile
#在檔案最後新增
export JAVA_HOME=/home/hadoop/jdk1.7.0_25
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$HOME/bin:$JAVA_HOME/bin
3.4、重新整理配置:source ~/.bash_profile
3.5、檢驗安裝結果 :java -version
java version "1.7.0_25"
Java(TM) SE Runtime Environment (build 1.7.0_25-b15)
Java HotSpot(TM) 64-Bit Server VM (build 23.25-b01, mixed mode)
4、安裝hadoop(非root使用者,這裡使用者名稱為hadoop)
4.1、上傳到/home/hadoop/soft
4.2、解壓安裝:tar -xvf hadoop-2.5.0.tar.gz
4.3、配置hadoop(配置檔案目錄$HADOOP_HOME/etc/hadoop)
第一個:hadoop-env.sh
export JAVA_HOME=/home/hadoop/jdk1.7.0_25
第二個:core-site.xml
<!-- 制定HDFS的老大(NameNode)的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop1:9000</value>
</property>
<!-- 指定hadoop執行時產生檔案的儲存目錄 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/hadoop-2.5.0/tmp</value>
</property>
第三個:hdfs-site.xml
<!-- 指定HDFS副本的數量 -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
第四個:mapred-site.xml
mv mapred-site.xml.template mapred-site.xml
vim mapred-site.xml
<!-- 指定mr執行在yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
第五個:yarn-site.xml
<!-- 指定YARN的老大(ResourceManager)的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop1</value>
</property>
<!-- reducer獲取資料的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
4.4、將hadoop新增到環境變數:vim ~/.bash_profile
export JAVA_HOME=/home/hadoop/jdk1.7.0_25
export HADOOP_HOME=/home/hadoop/hadoop-2.5.0
export PATH=$PATH:$HOME/bin:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
使配置生效:source ~/.bash_profile
4.5、格式化namenode(是對namenode進行初始化)
hdfs namenode -format
4.6、啟動hadoop
先啟動HDFS:sbin/start-dfs.sh
再啟動YARN:sbin/start-yarn.sh
4.7、使用jps命令驗證是否啟動成功
27408 NameNode
28218 Jps
27643 SecondaryNameNode
28066 NodeManager
27803 ResourceManager
27512 DataNode
4.8、開啟管理介面驗證是否啟動成功
http://192.168.137.31:50070/dfshealth.jsp(HDFS管理介面)
http://192.168.137.31:8088/cluster(MR管理介面)
4.9、執行相關操作驗證是否啟動成功
第一種:上傳檔案。建立檔案words並上傳到hdfs,執行:hadoop fs -put ~/doc/words /test
第二種:統計字元。建立檔案words並已經上傳到hdfs,進入$HADOOP_HOME/share/hadoop/mapreduce,執行:
hadoop jar hadoop-mapreduce-examples-2.5.0.jar wordcount /words /wordCount
部署過程中問題
1、hadoop “util.NativeCodeLoader: Unable to load native-hadoop library for your platform”
hadoop安裝完以後,經常會提示一下警告:WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform...using builtin-java classes where applicable
搜了好多文章,都說是跟系統位數有關係,但我使用的Liunx、JDK、Hadoop都是64位。
【解決方式】需要下載hadoop-native-64-2.5.0.tar:http://dl.bintray.com/sequenceiq/sequenceiq-bin/hadoop-native-64-2.5.0.tar。下載完以後,解壓到hadoop的native目錄下,覆蓋原有檔案即可。操作如下:tar -xvf hadoop-native-64-2.5.0.tar -C /home/hadoop/hadoop-2.5.0/lib/native/。