1. 程式人生 > 實用技巧 >Hadoop2.7.7 centos7 完全分散式 配置與問題隨記

Hadoop2.7.7 centos7 完全分散式 配置與問題隨記

Hadoop2.7.7 centos7 完全分散式 配置與問題隨記

這裡是當初在三個ECS節點上搭建hadoop+zookeeper+hbase+solr的主要步驟,文章內容未經過潤色,請參考的同學搭配其他部落格一同使用,並記得根據實際情況調整相關引數。

 

0.prepare

jdk,推薦1.8

關閉防火牆

開放ECS安全組

 三臺機器之間的免密登陸ssh

ip對映:【question1】hadoop啟動時出現報錯java.net.BindException: Cannot assign requested address

說明ip對映沒有配置正確,正確的方式是在每一個節點上,都執行"內外外"

的配置方式,即將本機與本機的內網ip對應,其他機器設定為外網ip

下面的檔案要在每個節點上都修改

 

1. vi /etc/profile

1. vi /etc/profile
/opt/hadoop/hadoop-2.7.7

export HADOOP_HOME=/opt/hadoop/hadoop-2.7.7 
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
export PATH=.:${JAVA_HOME}/bin:${HADOOP_HOME}/bin:$PATH

#使環境變數生效
souce /etc/profile
#檢驗
hadoop version

 

2. vi /.../hadoop-2.7.7/etc/hadoop/core-site.xml

<configuration>

<property>
	<name>fs.defaultFS</name>
		<value>hdfs://Gwj:8020</value>
	<description>定義預設的檔案系統主機和埠</description>
</property>

<property>
	<name>io.file.buffer.size</name>
		<value>4096</value>
	<description>流檔案的緩衝區為4K</description>
</property>

<property>
	<name>hadoop.tmp.dir</name>
		<value>file:/opt/hadoop/hadoop-2.7.7/tempdata</value>
	<description>A base for other temporary directories.</description>
</property>

</configuration>

 

3. vi /.../hadoop-2.7.7/etc/hadoop/hdfs-site.xml

<configuration>

    <property>
        <name>dfs.replication</name>
        <value>2</value>
    </property>
	
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>/opt/hadoop/hadoop-2.7.7/dfs/name</value>
    </property>
	
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>/opt/hadoop/hadoop-2.7.7/dfs/data</value>
    </property>

    <property>
        <name>dfs.webhdfs.enabled</name>
        <value>true</value>
    </property>
	
    <!--後增,如果想讓solr索引存放到hdfs中,則還須新增下面兩個屬性-->
        <property>
            <name>dfs.webhdfs.enabled</name>
            <value>true</value>
        </property>
        <property>
            <name>dfs.permissions.enabled</name>
            <value>false</value>
        </property>
        
        <!--【question2】SecondayNameNode預設與NameNode在同一臺節點上,在實際生產過程中有安全隱患。解決方法:加入如下配置資訊,指定NameNode和SecondaryNameNode節點位置-->
    	<property>
        	<name>dfs.http.address</name>
        	<value>Gwj:50070</value>
    	</property>
	
    	<property>
        	<name>dfs.namenode.secondary.http-address</name>
        	<value>Ssj:50090</value>
    	</property>
</configuration>

 

4. vi /.../hadoop-2.7.7/etc/hadoop/mapred-site.xml

<configuration>

    <property>
        <name>mapreduce.framework.name</name>
        <value>local</value>
    </property>
    
    <!-- 指定mapreduce jobhistory地址 -->
    <property>
        <name>mapreduce.jobhistory.address</name>
        <value>0.0.0.0:10020</value>
    </property>
    
    <!-- 任務歷史伺服器的web地址 -->
    <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>0.0.0.0:19888</value>
    </property>
	
</configuration>

 

5. vi /.../hadoop-2.7.7/etc/hadoop/yarn-site.xml

<configuration>
	
	<property>
        <name>yarn.resourcemanager.hostname</name>
        <value>Gwj</value>
        <description>指定resourcemanager所在的hostname</description>
	</property>
	
	<property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
        <description>NodeManager上執行的附屬服務。需配置成mapreduce_shuffle,才可執行MapReduce程式 </description>
	</property>

</configuration>

 

6.vi /.../hadoop-2.7.7/etc/hadoop/slaves

老版本是slaves檔案,3.0.3 用 workers 檔案代替 slaves 檔案

將localhost刪掉,加入dataNode節點的主機名
[root@Gwj ~]# cat /opt/hadoop/hadoop-2.7.7/etc/hadoop/slaves 
Ssj
Pyf

 

7.首次使用進行格式化

hdfs namenode -format

 

8.啟動

/.../hadoop-2.7.7/sbin/start/start-all.sh
	
	hdfs
		/.../hadoop-2.7.7/sbin/start/start-dfs.sh
		
	Yarn
		/.../hadoop-2.7.7/sbin/start/start-yarn.sh
		
#start可替換為stop、status

 

9.檢驗

使用jps檢驗
hadoop
	hdfs
		Master---NameNode (SecondaryNameNode)
		Slave---DataNode
	Yarn
		Master---ResourceManager 
		Slave---NodeManager

或者使用 “Master ip+50070”

 

---以下的yarn未設定,注意<configuration>!!!

	<property>
        <name>yarn.resourcemanager.address</name>
        <value>${yarn.resourcemanager.hostname}:8032</value>
	</property>
	
	<property>
        <description>The address of the scheduler interface.</description>
        <name>yarn.resourcemanager.scheduler.address</name>
        <value>${yarn.resourcemanager.hostname}:8030</value>
	</property>
	
	<property>
        <description>The http address of the RM web application.</description>
        <name>yarn.resourcemanager.webapp.address</name>
        <value>${yarn.resourcemanager.hostname}:8088</value>
	</property>
	
	<property>
        <description>The https adddress of the RM web application.</description>
        <name>yarn.resourcemanager.webapp.https.address</name>
        <value>${yarn.resourcemanager.hostname}:8090</value>
	</property>
	
	<property>
        <name>yarn.resourcemanager.resource-tracker.address</name>
        <value>${yarn.resourcemanager.hostname}:8031</value>
	</property>
	
	<property>
        <description>The address of the RM admin interface.</description>
        <name>yarn.resourcemanager.admin.address</name>
        <value>${yarn.resourcemanager.hostname}:8033</value>
	</property>
	
	<property>
        <name>yarn.scheduler.maximum-allocation-mb</name>
        <value>2048</value>
        <discription>每個節點可用記憶體,單位MB,預設8182MB,根據阿里雲ECS效能配置為2048MB</discription>
	</property>

	<property>
        <name>yarn.nodemanager.vmem-pmem-ratio</name>
        <value>2.1</value>
	</property>
	
	<property>
        <name>yarn.nodemanager.resource.memory-mb</name>
        <value>2048</value>
	</property>
	
	<property>
        <name>yarn.nodemanager.vmem-check-enabled</name>
        <value>false</value>
	</property>

</configuration>